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.
Cloudflared tunnel (Recommended)
You get the token from the Cloudflare Zero Trust dashboard. Follow the official guide to learn how to get the Cloudflared tunnel token.
TUNNEL_TOKEN=mytokengoeshere
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.
DOMAIN=your-domain.com
EMAIL=your@email.com
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.
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