Yacht is a flask based container management UI with a focus on templates and 1-click deployments.
Currently only linux has been verified as working but we are open to the idea of supporting windows eventually as well.
Keep in mind, this is an Alpha so the risk of data loss is real and it may not be stable
Once docker is installed you'll simply run the following commands to get started:
docker volume create yacht
docker run -d -p 5000:5000 -v /var/run/docker.sock:/var/run/docker.sock -v yacht:/config selfhostedpro/yacht:latest
It will be available on port 5000.
The default username is [email protected]
.
The default password is password
.
You can change these by setting the ADMIN_EMAIL
and ADMIN_PASSWORD
environment variables or in the account settings within the application.
- User Management
- User and Admin Roles
- Container Templating Compatibility (Portainer Compatible)
- Semantic UI Framework
- Basic Container Management
- Easy Template Updating
- Advanced Container Management (Edit, Modify, Create without a template)
- Container Monitoring
- Docker-Compose Compatibility
- Easy access to container interfaces
- Centralized settings for volume management and similar QOL functionality.
Currently SelfhostinGUI is compatible with portainer templates. You'll add a template url in the "Add Template" settings. The the template will be read, separated into apps, and imported into the database. The apps associated with the templates are linked via a db relationship so when the template is removed, so are the apps associated with it. We store the template url as well so we can enable updating templates with a button press (TODO).
We recommend starting with: https://raw.githubusercontent.com/SelfhostedPro/selfhosted_templates/yacht/Template/template.json
Documentation for the boilerplate available at http://hack4impact.github.io/flask-base and https://github.com/hack4impact/flask-base.
Windows:
$ python3 -m venv venv
$ venv\Scripts\activate.bat
Unix/MacOS:
$ python3 -m venv venv
$ source venv/bin/activate
Learn more in the documentation.
Note: if you are using a python before 3.3, it doesn't come with venv. Install virtualenv with pip instead.
$ xcode-select --install
Create a file called config.env
that contains environment variables. Very important: do not include the config.env
file in any commits. This should remain private. You will manually maintain this file locally, and keep it in sync on your host.
Variables declared in file have the following format: ENVIRONMENT_VARIABLE=value
. You may also wrap values in double quotes like ENVIRONMENT_VARIABLE="value with spaces"
.
-
In order for Flask to run, there must be a
SECRET_KEY
variable declared. Generating one is simple with Python 3:$ python3 -c "import secrets; print(secrets.token_hex(16))"
This will give you a 32-character string. Copy this string and add it to your
config.env
:SECRET_KEY=Generated_Random_String
-
The mailing environment variables can be set as the following. We recommend using Sendgrid for a mailing SMTP server, but anything else will work as well.
MAIL_USERNAME=SendgridUsername MAIL_PASSWORD=SendgridPassword
Other useful variables include:
Variable | Default | Discussion |
---|---|---|
ADMIN_EMAIL |
[email protected] |
email for your first admin account |
ADMIN_PASSWORD |
password |
password for your first admin account |
DATABASE_URL |
data-dev.sqlite |
Database URL. Can be Postgres, sqlite, etc. |
RAYGUN_APIKEY |
None |
API key for Raygun, a crash and performance monitoring service |
FLASK_CONFIG |
default |
can be development , production , default , heroku , unix , or testing . Most of the time you will use development or production . |
$ pip install -r requirements.txt
You need Redis, Sass, and Postgresql. Chances are, these commands will work:
Sass:
$ gem install sass
PostgresQL
Mac (using homebrew):
brew install postgresql
Linux (based on this issue):
sudo apt-get install libpq-dev
$ python manage.py recreate_db
$ python manage.py setup_dev
Note that this will create an admin user with email and password specified by the ADMIN_EMAIL
and ADMIN_PASSWORD
config variables. If not specified, they are both [email protected]
and password
respectively.
$ source env/bin/activate
$ honcho start -e config.env -f Local
For Windows users having issues with binding to a redis port locally, refer to this issue.
Currently we have a Dockerfile
intended for testing purposes and it automates the whole cycle of running the application, setting up the database and redis.
A more robust version with docker-compose is being developed to separate redis in separate container and allow the deployment of production-level applications automatically without the need of manual provisioning
Before you submit changes to flask-base, you may want to autoformat your code with python manage.py format
.