seelf

Lightweight self-hosted deployment platform written in Go.

Access

  • Web interface: https://<server-ip>
  • Log in using the admin email and password defined during deployment.
  •  Admin credentials are stored in: /root/seelf/.env

Important Files and Directories

  • Application directory: /root/seelf/
  • Environment file (credentials): /root/seelf/.env
  • Docker Compose file: /root/seelf/compose.yml
  • Seelf persistent data: /var/lib/docker/volumes/seelf_data/
  • Seelf SSH data: /var/lib/docker/volumes/seelf_ssh/
  • Nginx site configuration: /etc/nginx/sites-available/seelf
  • Enabled Nginx site: /etc/nginx/sites-enabled/seelf
  • TLS certificate: /etc/nginx/ssl/fullchain.pem
  • TLS private key: /etc/nginx/ssl/privkey.pem

Service Management

Check container status:

docker compose -f /root/seelf/compose.yml ps

Restart:

docker compose -f /root/seelf/compose.yml restart

View logs:

docker compose -f /root/seelf/compose.yml logs -f

Enabling SSL with a Domain

1. Point your domain to the server IP.

2. Edit Nginx config and replace both server_name <IP>; with your domain (<your-domain>) for both HTTP (port 80) and HTTPS (port 443) blocks:

vim /etc/nginx/sites-available/seelf

3. Install Certbot:

apt install -y certbot python3-certbot-nginx

4. Run the following command to generate a valid Let’s Encrypt certificate:

certbot certonly --nginx --non-interactive --agree-tos --email [email protected] -d yourdomain.com

5. Replace SSL paths in Nginx config:

vim /etc/apache2/sites-available/seelf
# Before:
    # ssl_certificate /etc/nginx/ssl/fullchain.pem;
    # ssl_certificate_key /etc/nginx/ssl/privkey.pem;
# After:
    # ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    # ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

6. Restart Nginx to apply the changes:

systemctl restart nginx

7. Open your browser and visit: https://yourdomain.com

Application Details