No Lock-In
Vessl is designed so you never lose access to your applications. Every app and database runs as a standard Docker container with persistent volumes. Removing Vessl leaves your containers running.
How It Works
Section titled “How It Works”- App containers — deployed with
--restart unless-stoppedvia standard Docker. - Database containers — run on named volumes that persist independently.
- Traefik reverse proxy — is managed by Vessl, but your containers keep running if Vessl stops.
Uninstall Vessl Without Losing Apps
Section titled “Uninstall Vessl Without Losing Apps”vessld uninstallThis command:
- Stops the Vessl daemon container.
- Removes the systemd service.
- Removes
vessldfrom PATH. - Leaves all your app and database containers running.
After uninstall, your apps continue serving traffic if you set up your own reverse proxy. The Traefik routing will stop, but your containers are still running on the Vessl Docker network with their assigned ports.
Adopt Your Containers (After Uninstall)
Section titled “Adopt Your Containers (After Uninstall)”To take manual control of your containers:
# List all running containersdocker ps --filter network=vessl-network
# Inspect an app containerdocker inspect <container-name>
# View logsdocker logs <container-name>
# Set up your own reverse proxy (nginx example):# docker run -d --name my-proxy -p 80:80 -p 443:443 ...# Point it to your app containers on the vessl-networkDatabases
Section titled “Databases”Database containers have persistent volumes:
# List volumesdocker volume ls | grep vessl-db
# Backup a database volumedocker run --rm -v vessl-db-data-<id>:/data -v $(pwd):/backup alpine tar czf /backup/db-backup.tar.gz -C /data .Migration to Another Platform
Section titled “Migration to Another Platform”Since everything is standard Docker, migrating is straightforward:
- List all running containers:
docker ps --filter network=vessl-network - For each container, note the image, env vars, and volume mounts.
- Recreate them on your new platform with the same configuration.
# Example: recreate a database container manuallydocker run -d \ --name my-postgres \ --network vessl-network \ -e POSTGRES_USER=vessl \ -e POSTGRES_PASSWORD=<password> \ -e POSTGRES_DB=vessl \ -v vessl-db-data-<id>:/var/lib/postgresql/data \ postgres:16-alpineBackup Before Changes
Section titled “Backup Before Changes”Before any major operation:
vessld backupThis creates a timestamped copy of the Vessl database at /vessl/data/backups/.