Docker
SoulFire + Docker = ❤️ Official Docker images are available on Docker Hub (opens in a new tab). 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 (opens in a new tab).
How to install Docker?
Look at this official guide (opens in a new tab).
Basic setup
Just setup SoulFire with no extra configuration or other services.
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
HTTPS setup
SoulFire runs on HTTP, but if you run a web endpoint you're going to need HTTPS for client-side requests from websites. You have two options, set up a reverse proxy with automatic HTTPS or use cloudflared as a https tunnel.
Reverse proxy
You will have to change the placeholders for the domain and email.
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(`your-domain.com`)"
- "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=your@email.com"
- "--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
Cloudflared
You get the token from the cloudflare dashboard (opens in a new tab).
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=mytokengoeshere
volumes:
app_data:
driver: local