Skip to Content
🎉 SoulFire has a brand new client. 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.

How to install Docker?

Look at this official guide.

Basic setup

Just setup SoulFire with no extra configuration or other services.

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

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.

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(`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.

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=mytokengoeshere volumes: app_data: driver: local
Last updated on