Skip to Content
🎉 SoulFire is now on Linux Flathub. Download →

Docker

SoulFire + Docker = ❤️ Official Docker images are available on Docker Hub . Those contain the SoulFire Dedicated Server. This guide assumes you know Docker and Docker compose well and are able to troubleshoot issues on your own.

Pterodactyl/Pelican panel egg

You want to use Docker without the hassle of setting up the container yourself? If you are a user of Pterodactyl/Pelican, you can use the official egg .

It is recommended to set up the Cloudflared egg  to setup HTTPS to forward the SoulFire egg.

How to install Docker?

Look at this official guide .

HTTPS setup

SoulFire uses HTTP, but if you run a public domain endpoint you’re going to need HTTPS set up for dedicated servers. You have two options, use Cloudflared as a HTTPS tunnel or set up a reverse proxy like Traefik with automatic HTTPS.

You get the token from the Cloudflare Zero Trust dashboard. Follow the official guide  to learn how to get the Cloudflared tunnel token.

.env
TUNNEL_TOKEN=mytokengoeshere
docker-compose.yml
services: app: image: alexprogrammerde/soulfire restart: always healthcheck: test: ["CMD", "curl", "-f", "http://localhost:38765/health"] interval: 30s timeout: 10s retries: 5 volumes: - app_data:/soulfire/data cloudflared: image: cloudflare/cloudflared command: tunnel run environment: TUNNEL_TOKEN: ${TUNNEL_TOKEN} volumes: app_data: driver: local

Traefik

Traefik is a powerful reverse proxy that allows serving SoulFire with HTTPS.

.env
DOMAIN=your-domain.com EMAIL=your@email.com
docker-compose.yml
services: app: image: alexprogrammerde/soulfire restart: always healthcheck: test: ["CMD", "curl", "-f", "http://localhost:38765/health"] interval: 30s timeout: 10s retries: 5 labels: - "traefik.enable=true" - "traefik.http.routers.soulfire.rule=Host(`${DOMAIN}`)" - "traefik.http.services.soulfire.loadbalancer.server.port=38765" - "traefik.http.routers.soulfire.entrypoints=websecure" - "traefik.http.routers.soulfire.tls.certresolver=myresolver" volumes: - app_data:/soulfire/data traefik: image: traefik command: - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.myresolver.acme.tlschallenge=true" - "--certificatesresolvers.myresolver.acme.email=${EMAIL}" - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "letsencrypt:/letsencrypt" volumes: app_data: driver: local letsencrypt: driver: local

HTTP setup

Just setup SoulFire with no extra configuration or other services.

This will only serve SoulFire via HTTP. This means that traffic with SoulFire is unencrypted and insecure. All tokens/emails are sent in cleartext and are hijackable with Man In The Middle attacks. It is recommended to setup SoulFire using HTTPS.

docker-compose.yml
services: app: image: alexprogrammerde/soulfire restart: always healthcheck: test: ["CMD", "curl", "-f", "http://localhost:38765/health"] interval: 30s timeout: 10s retries: 5 ports: - '38765:38765' volumes: - app_data:/soulfire/data volumes: app_data: driver: local
Last updated on