SERVER DEPLOYMENT // ZERO DEPENDENCIES

INSTALLATION & SETUP

Deploy Fuxico in seconds. Choose between 12-factor Docker Compose with automated Watchtower updates, or the lightweight single-file portable fuxico.php bundle.

๐Ÿณ FrankenPHP + Watchtower ๐Ÿ˜ PHP 8.2+ Portable Single-File ๐Ÿ”’ SQLite Auto-Lockdown

๐Ÿณ 1. Docker Compose Deployment (Recommended)

The official production container is built on FrankenPHP Alpine, running as a non-root user with persistent storage and scoped Watchtower auto-updates:

docker-compose.yml
services:
  fuxico:
    image: lumenpink/fuxico:latest
    container_name: fuxico
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - FUXICO_PUBLIC_MODE=true
      - FUXICO_DATA_DIR=/workspace/data
      - FUXICO_AUTH_TOKENS=tatanka
    volumes:
      - ./data:/workspace/data
    labels:
      - "com.centurylinklabs.watchtower.scope=fuxico"

  watchtower:
    image: containrrr/watchtower
    container_name: fuxico_watchtower
    restart: unless-stopped
    environment:
      - WATCHTOWER_SCOPE=fuxico
      - WATCHTOWER_POLL_INTERVAL=3600
      - WATCHTOWER_CLEANUP=true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
bash โ€” start container
docker compose up -d

๐Ÿ˜ 2. Portable Single-File Server (Zero Composer)

Download fuxico.php directly and run it on any server or VPS with PHP 8.2+. No vendor folder, no database installation, no build steps:

bash โ€” standalone run
# 1. Download standalone server bundle:
curl -O https://fuxico.2lp.in/fuxico.php

# 2. Run instant built-in web server:
FUXICO_PUBLIC_MODE=true php -S 0.0.0.0:8080 fuxico.php

๐ŸŒ 3. Web Server Configuration

Caddy (Recommended)

Caddyfile
fux.example.com {
    encode zstd gzip

    request_body {
        max_size 512MB
    }

    reverse_proxy 127.0.0.1:8080
}

Nginx

nginx.conf
server {
    listen 80;
    server_name fux.example.com;
    client_max_body_size 500M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

โš™๏ธ 4. Environment Configuration

Configure Fuxico using standard environment variables:

Variable Default Description
FUXICO_PUBLIC_MODE false When true, uploads are open to everyone (0x0.st public mode). When false, uploads require a master token.
FUXICO_AUTH_TOKENS tatanka Comma-separated list of valid master tokens for private instances.
FUXICO_DATA_DIR ./data Root directory where SQLite database and encrypted file storage are maintained.
FUXICO_MAX_UPLOAD_SIZE 524288000 Maximum allowed payload upload size in bytes (default: 500 MB).
FUXICO_SLUG_LENGTH 5 Character length of standard random slugs (e.g. /abcde.png).
FUXICO_SECRET_SLUG_LENGTH 16 Character length of high-entropy secret slugs (e.g. /8x9yt4m2k9p1q7z0.png).
FUXICO_BASE_URL (auto-detected) Explicitly override base URL (e.g., https://fux.example.com).
FUXICO_LANG en Default fallback UI language (pt or en). Auto-detects Accept-Language when unset.