In a Nutshell (🌰)
- Install SSM using one-line scripts for Docker or Proxmox
- Set up required environment variables for security
- Access the web interface on port 8000
⚠️ System Requirements
Before proceeding, ensure your system meets all requirements
Installation Methods
One-Line Installation Scripts
Choose the installation method that matches your environment:
# Quick Docker installation
curl -sL https://getssm.io | bash
# Quick Proxmox installation
bash -c "$(wget -qLO - https://getssm.io/proxmox)"
Alternatives:
🐳 Docker Installation
Step-by-step guide for installing SSM using Docker.
🖥️ Proxmox Installation
Detailed instructions for installing SSM on Proxmox.
Manual Installation with Docker Compose
SSM publishes pre-built images for all components on GitHub Packages.
Step 1: Create docker-compose.yml
Create a docker-compose.yml
file with the following content:
services:
proxy:
restart: unless-stopped
image: "ghcr.io/squirrelcorporation/squirrelserversmanager-proxy:latest"
ports:
- "8000:8000"
depends_on:
- client
- mongo
- server
- redis
- prometheus
labels:
wud.display.name: "SSM - Proxy"
wud.watch.digest: false
prometheus:
image: "ghcr.io/squirrelcorporation/squirrelserversmanager-prometheus:latest"
container_name: prometheus-ssm
restart: unless-stopped
volumes:
- ./.data.prod/prometheus:/prometheus
labels:
wud.display.name: "SSM - Prometheus"
mongo:
container_name: mongo-ssm
image: mongo
restart: unless-stopped
volumes:
- ./.data.prod/db:/data/db
command: --quiet
labels:
wud.display.name: "SSM - MongoDB"
redis:
container_name: cache-ssm
image: redis
restart: unless-stopped
volumes:
- ./.data.prod/cache:/data
command: --save 60 1
labels:
wud.display.name: "SSM - Redis"
server:
image: "ghcr.io/squirrelcorporation/squirrelserversmanager-server:latest"
restart: unless-stopped
healthcheck:
test: curl --fail http://localhost:3000/ping || exit 1
interval: 40s
timeout: 30s
retries: 3
start_period: 60s
external_links:
- mongo
- redis
- prometheus
depends_on:
- mongo
- redis
- prometheus
env_file: .env
environment:
NODE_ENV: production
volumes:
- ./.data.prod:/data
labels:
wud.display.name: "SSM - Server"
wud.watch.digest: false
client:
image: "ghcr.io/squirrelcorporation/squirrelserversmanager-client:latest"
restart: unless-stopped
depends_on:
- server
labels:
wud.display.name: "SSM - Client"
wud.watch.digest: false
Step 2: Create .env file
Create a .env
file with the following configuration:
#SECRETS
SECRET=REPLACE_ME
SALT=1234567890123456
VAULT_PWD=REPLACE_ME
#MONGO
DB_HOST=mongo
DB_NAME=ssm
DB_PORT=27017
#REDIS
REDIS_HOST=redis
REDIS_PORT=6379
#TELEMETRY
TELEMETRY_ENABLED=true
🔐 Security Warning
Replace SECRET
, SALT
, and VAULT_PWD
with secure values:
SECRET
: A long, random string for JWT signingSALT
: Must be exactly 16 alphanumeric charactersVAULT_PWD
: A strong password for Ansible vault encryption
Never use the default values in production!
Step 3: Launch SSM
Start the application with Docker Compose:
# For Docker Compose V2
docker compose up -d
# For Docker Compose V1
docker-compose up -d
Step 4: Access the interface
Open your browser and navigate to:
Updating SSM
To update SSM to the latest version:
# Pull the latest images
docker compose pull
# Restart the services with the new images
docker compose up -d
Configuration Options
Disabling Telemetry
By default, SSM collects anonymized usage statistics. This helps us improve the application and doesn't include sensitive information.
To disable telemetry:
- Edit your
.env
file - Set
TELEMETRY_ENABLED=false
- Restart SSM
What data does telemetry collect?
The anonymized telemetry includes:
- SSM version
- Number of devices connected
- Number of containers managed
- Operating system type
- General usage patterns
No personal information, credentials, or identifying data is collected.
Other Alternative Installation Methods (Advanced)
🔧 Manual Build
Build SSM from source code for complete customization.
🛡️ Dockerless Setup
Install SSM without Docker for specialized environments.
📡 Proxy-Free Setup
Install SSM without the proxy component.
Troubleshooting
Docker port conflict errors
Problem: Error message about port 8000 already in use.
Solution: Change the port mapping in docker-compose.yml:
proxy:
ports:
- "8001:8000" # Change 8000 to another port
MongoDB connection issues
Problem: Server container fails to start with MongoDB connection errors.
Solution: Ensure MongoDB is running and check your .env configuration:
DB_HOST=mongo
DB_NAME=ssm
DB_PORT=27017
Permission errors on volumes
Problem: Permission denied errors when accessing volume data.
Solution: Fix permissions on host directories:
sudo chown -R 1000:1000 ./.data.prod