Dockerization of server-side @SINDAN suite
- Branch: shored-master is the previous generation maintained by @shored (soon to be deprecated and removed)
Please visit our website sindan-net.com for more details. (Japanese edition only)
These instructions will get you a copy of this project up and running on your environment for production purpose. If you want to use this for development or testing purposes, some configurations need to be fixed appropriately.
To build images on your local environment, Docker with BuildKit support is needed. GNU/Make is not necessary, but it can reduce the number of commands you type.
- docker-engine: 18.06.0 and higher
- docker-compose: 1.22.0 and higher
By default, SINDAN servers listen and wait for requests from external network at the following ports. Open these ports in your firewall beforehand as needed.
- Caddy : 80/tcp, 443/tcp
- ghcr.io/sindan/sindan-docker/fluentd: 8080/tcp, 8888/tcp
- ghcr.io/sindan/sindan-docker/visualization: 3000/tcp
- ghcr.io/sindan/sindan-docker/grafana: 3001/tcp
First of all, you have to shallow clone this repository recursively with:
$ git clone --recursive --depth 1 https://github.com/SINDAN/sindan-dockerIf you ran simple cloning command without recursive option or downloaded as a zip archive via browser, make sure that all submodules are fully updated.
$ git submodule update --init --recursiveGit will ignore all of password files in .secrets directory, so that the updates are local-only.
Set the password of MySQL database.
For mac users, use shasum -a 256 instead of sha256sum below.
$ echo PASSWORD_OF_YOUR_ENV | sha256sum | cut -d ' ' -f 1 > .secrets/db_password.txtRegister user accounts of SINDAN Web.
User's password must be 8-72 characters long.
Sample accounts.yml registers an account whose name is sindan and password is changeme.
$ cp .secrets/accounts.yml.example .secrets/accounts.yml
$ vim .secrets/accounts.ymlYou can register multiple accounts in bulk.
accounts:
- username: hoge
email: [email protected]
password: changeme
- username: fuga
email: [email protected]
password: changemeFinally, set the Grafana's username and password to gf_user.txt and gf_password.txt respectively.
$ cp .secrets/gf_user.txt.example .secrets/gf_user.txt
$ cp .secrets/gf_password.txt.example .secrets/gf_password.txt
$ vim -p .secrets/gf_user.txt .secrets/gf_password.txtAlso if you want to start up with https, set your service domain name. (You must register this domain name entry to the DNS properly.)
$ cp caddy/domain.env.example caddy/domain.env
$ vim caddy/domain.envBuild dockerfile and initialize database. This might take a while.
$ cp .secrets/rails_secret_key_base.env.example .secrets/rails_secret_key_base.env
$ make build initInstead of building locally, you can download pre-built images from GitHub Packages.
Note that in this case, you must not edit rails_secret_key_base.env as you like.
Just follow the next:
$ cp .secrets/rails_secret_key_base.env.example .secrets/rails_secret_key_base.env
$ make pull initDeploy containers built or pulled previous steps.
$ make run log
If you want to start up with https:
$ make runtls log
Open your favorite browser and go http://localhost:3000 to see SINDAN Web. (If you start up on https, look at https://localhost:13000.)
You can also access Grafana with http://localhost:3001. (If you start up on https, look at https://localhost:13001.) The screenshot will be added later.
$ make stop # Stop all containers
$ make clean # Remove all containers (data will not be lost)
$ make destroy # Remove all containers, volumes, images
Thanks to Git and Docker, it is very easy to maintain SINDAN servers even after the production deployment. If you want to perform the rolling update or zero downtime deployment, consider using Kubernetes - check charts for details.
You can backup MySQL database anytime you want, and of course you can restore that in a simple way. In the case of restoring, it is recommended to stop all containers in advance.
$ make backup # Dump the database to ./sindan_database_YYYY-MMDD-HHMMSS.sql.gz
$ make restore # Restore the database from ./restore.sql.gz
For example, if you are trying to deploy servers to new environment and you want to inherit the database created in previous environment, following may help you:
$ git clone --recursive --depth 1 https://github.com/SINDAN/sindan-docker
$ cd sindan-docker
$ # Put the backup and rename it to restore.sql.gz
$ make pull restore run log
Just type make update and your local repository will be up to date with the latest version.
For safety reasons, do not forget to stop all containers before the update.
That is, the command you should run is like the following.
It sequencially executes backup database, stop containers, update repository and restart containers:
$ make backup clean update pull run
We use CalVer for versioning. For the versions available, see the tags on this repository.
- Tomohiro ISHIHARA - Initial work & Patch contribution - @shored
- Taichi MIYA - Overhaul & Refactoring - @mi2428
See also the list of contributors who participated in this project.
This project is licensed under the BSD 3-Clause "New" or "Revised" License - see the LICENSE file for details.

