https://github.com/tldr-devops/startpack Skip to content Sign up * Product + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} tldr-devops / startpack Public * Notifications * Fork 9 * Star 216 Selfhosted tech starter pack for development of new project or startup MIT License 216 stars 9 forks Star Notifications * Code * Issues 0 * Pull requests 0 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 0 tags Code Latest commit @Friz-zy Friz-zy add Coolify and Dokku as alternative into reamde ... 3acc89b Apr 1, 2022 add Coolify and Dokku as alternative into reamde 3acc89b Git stats * 37 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time configs mass update of configs Mar 29, 2022 LICENSE Initial commit Mar 17, 2022 README.md add Coolify and Dokku as alternative into reamde Mar 31, 2022 databases.yml mass update of configs Mar 29, 2022 env.sh move nfs into separate file for docker swarm setup Mar 29, 2022 env.sh.test move nfs into separate file for docker swarm setup Mar 29, 2022 gitlab-runner.yml add gitlab-runner Mar 26, 2022 gitlab.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 minio.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 monitoring.yml remove network 'ingress' from configs because of docker swarm Mar 29, 2022 nextcloud.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 nfs.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 nocodb.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 openproject.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 portainer.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 registry.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 rocketchat.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 setup-compose.yml remove network 'ingress' from configs because of docker swarm Mar 29, 2022 setup-swarm.yml remove network 'ingress' from configs because of docker swarm Mar 29, 2022 setup.sh add nextcloud Mar 28, 2022 strapi.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 tuleap.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 vaultwarden.yml rewrite volumes because of problem with NFS server in docker swarm Mar 29, 2022 View code [ ] startpack Available and planned open source components Platform Databases and Storage Management Chat Backend as a service CMS Low Code Platform CI & CD Miss something? Could you tell me more about how can I help you, please? Support Setup 1) Install docker if it doesn't installed 2) Setup docker swarm if you choose using it. 3) Get this repo 4) Fill necessary variables like domain name of your server, your email, passwords for basic auth and sql services. 5) Prepare environment 6) Run your new services Docker Compose Docker Swarm 7) Run gitlab-runner on separate machine with docker-compose 8) Login into your docker registry on all docker hosts 9) You should configure backups of your server, at least $DATAPATH directory README.md startpack Voices From Belarus Stand With Ukraine This is a basic setup of services for faster startup development. You can run it via docker-compose or docker swarm. Warning: This setup doesn't provide high level of security or any high availability. You have to hire some skilled devops engineer (like me)) for close this gap after getting first round or sales. Also you can check Awesome Selfhosted, Awesome Sysadmin and Free for Dev for more options ;) And Coolify or Dokku - an open-source & self-hostable Heroku / Netlify alternative Discuss on hacker news Time track: * Filipp Frizzy: 63h 30m for 15 days Available and planned open source components Platform * [DONE] Docker Compose * [DONE] Docker Swarm * [DONE] Traefik as web server with autodiscovery and letsencrypt certs * [DONE] NFS for docker swarm volumes * [DONE] Portainer as admin panel for docker services * [DONE] Docker registry for store your docker images * [DONE] Influxdb 2 and Telegraf for monitoring services * [DONE] Grafana and Victoriametrics for monitoring services Databases and Storage * [DONE] Mariadb as SQL database * [DONE] Postgresql as another popular SQL database * [DONE] SQL Adminer as admin panel for SQL databases * [DONE] Minio as s3 storage Management * [DONE] Gitlab as git hosting and devops platform * [DONE] Nextcloud as cloud storage with plugins for emal, task management, password storage, etc * [DONE] Tuleap as management software * [DONE] Openproject as management software * [DONE] Vaultwarden as password manager for business * [Backlog] Zentao as scrum management software * [Backlog] Taiga as kanban board based management software * [Backlog] Owncloud as cloud storage Chat * [DONE] Rocket * [Backlog] Mattermost * [Backlog] Twake as alternative to Microsoft Teams * [Backlog] Wire as alternative to Microsoft Teams Backend as a service * [DONE] Nocodb as airtable alternative * [DONE] Strapi as headless CMS * [Backlog] Appwrite as firebase alternative CMS * [Backlog] Wordpress one of the most popular CMS * [Backlog] Ghost as alternative to medium * [Backlog] Webiny landing page builder with drag and drop features * [Backlog] Grapedrop open source page builder Low Code Platform * [Backlog] Anvil is a framework for building full-stack web apps with nothing but Python * [Backlog] Budibase build modern business apps in under 5 minutes * [Backlog] Appsmith a powerful open source framework to build internal tools * [Backlog] Tooljet everything you need to build internal tools CI & CD * [DONE] Gitlab Runner should be placed on separate host Miss something? Could you tell me more about how can I help you, please? Support You can support this or any other of my projects * ko-fi * donationalerts.com/r/filipp_frizzy * ETH 0xCD9fC1719b9E174E911f343CA2B391060F931ff7 * BTC bc1q8fhsj24f5ncv3995zk9v3jhwwmscecc6w0tdw3 Setup All operations should be executed from root on target machine. You can use your laptop or some server. For running all services you need at least 2 cpu cores, 8gb memory and 20gb of free disk space. You can find cheap servers on hetzner.com or compare small hosters on vps.today. You also need a valid domain name pointed to this server for automatically setting up https with traefik and letsencrypt. However, you can hack your hosts file for working without https. For bying domain and configuring DNS I recommend you Cloudflare. You should create at least two DNS record type A: 1. your domain name pointed to your server IP 2. *.your domain name pointed to your server IP If you run services with docker-compose, all service will be located on your single server. With docker stack (swarm) mode, you can add addition servers in the same local network (the same network important for nfs volumes mounting unfortunately). 1) Install docker if it doesn't installed (run scripts from the internet is a bad practice, but if you don't know how to install docker with package managers - it's acceptable) curl -fsSL https://get.docker.com -o get-docker.sh DRY_RUN=1 sh ./get-docker.sh sh ./get-docker.sh Install docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 2) Setup docker swarm if you choose using it. docker swarm init --advertise-addr $(hostname -I | awk '{print $1}') 3) Get this repo git clone https://github.com/tldr-devops/startpack.git --depth=1 cd startpack 4) Fill necessary variables like domain name of your server, your email, passwords for basic auth and sql services. Generate random passwords echo -e "export NEXTCLOUD_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export TULEAP_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export STRAPI_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export GITLAB_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export OPENPROJECT_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export NOCODB_SQL_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export REGISTRY_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export SQL_ROOT_PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh echo -e "export PASSWORD=$(echo $RANDOM `date`|md5sum|base64|head -c 25)\n$(cat env.sh)" > env.sh You should change this lines with your email and dns name echo -e "export EMAIL='Type your email here'\n$(cat env.sh)" > env.sh echo -e "export DOMAIN='Type your domain here'\n$(cat env.sh)" > env.sh This is your credentials, store it in your password manager ;) cat env.sh 5) Prepare environment source env.sh bash setup.sh If you have docker swarm setup with more than one machine, you should start NFS server on main manager and connect other nodes to it: A) On main machine # Setup NFS server with compose as docker-swarm still doesn't support `privileged` mode docker-compose -f nfs.yml up -d B) On all other machines export MASTER_IP="your $MASTER_IP from step 4" export DATAPATH="your $DATAPATH from step 4" echo -e "$MASTER_IP:$DATAPATH $DATAPATH nfs nfsvers=4,rw 0 0" > /etc/fstab mount $DATAPATH 6) Run your new services After entering all commands below you'll able to login into your new services by addresses: * https://traefik.your_domain user your $USERNAME password your $PASSWORD * https://portainer.your_domain * https://registry.your_domain user your $REGISTRY_USERNAME password your $REGISTRY_PASSWORD * https://influxdb.your_domain user your $USERNAME password your $PASSWORD * https://grafana.your_domain user your $USERNAME password your $PASSWORD * https://victoriametrics.your_domain user your $USERNAME password your $PASSWORD * https://adminer.your_domain user your $USERNAME password your $PASSWORD * https://minio-console.your_domain user your $USERNAME password your $PASSWORD * https://gitlab.your_domain user root password your $PASSWORD * https://nextcloud.your_domain user your $USERNAME password your $PASSWORD * https://tuleap.your_domain user admin password your $PASSWORD * https://openproject.your_domain user admin password admin * https://rocketchat.your_domain * https://vaultwarden.your_domain/admin password your $PASSWORD * https://nocodb.your_domain * https://strapi.your_domain Docker Compose Mandatory steps docker-compose -f setup-compose.yml up -d docker-compose -f databases.yml up -d from now on you can choose which services you need docker-compose -f monitoring.yml up -d docker-compose -f registry.yml up -d docker-compose -f minio.yml up -d docker-compose -f vaultwarden.yml up -d docker-compose -f tuleap.yml up -d docker-compose -f nextcloud.yml up -d docker-compose -f gitlab.yml up -d After enabling portainer you should immediately go to portainer.your_domain and set admin password docker-compose -f portainer.yml up -d After enabling rocketchat you should immediately go to rocketchat.your_domain/admin and set admin password docker-compose -f rocketchat.yml up -d After enabling openproject you should immediately go to openproject.your_domain, login with admin user and admin password, change it and update settings on openproject.your_domain/admin/ settings/general docker-compose -f openproject.yml up -d After enabling nocodb you should immediately go to nocodb.your_domain and set admin password docker-compose -f nocodb.yml up -d After enabling strapi you should wait a minute and then go to strapi.your_domain/admin and set admin password docker-compose -f strapi.yml up -d Docker Swarm Mandatory steps docker stack deploy --compose-file setup-swarm.yml startpack docker stack deploy --compose-file databases.yml startpack From now on you can choose which services you need docker stack deploy --compose-file monitoring.yml startpack docker stack deploy --compose-file registry.yml startpack docker stack deploy --compose-file minio.yml startpack docker stack deploy --compose-file vaultwarden.yml startpack docker stack deploy --compose-file tuleap.yml startpack docker stack deploy --compose-file nextcloud.yml startpack docker stack deploy --compose-file gitlab.yml startpack After enabling portainer you should immediately go to portainer.your_domain and set admin password docker stack deploy --compose-file portainer.yml startpack After enabling rocketchat you should immediately go to rocketchat.your_domain/admin and set admin password docker stack deploy --compose-file rocketchat.yml startpack After enabling openproject you should immediately go to openproject.your_domain, login with admin user and admin password, change it and update settings on openproject.your_domain/admin/ settings/general docker stack deploy --compose-file openproject.yml startpack After enabling nocodb you should immediately go to nocodb.your_domain and set admin password docker stack deploy --compose-file nocodb.yml startpack After enabling strapi you should immediately go to strapi.your_domain /admin and set admin password docker stack deploy --compose-file strapi.yml startpack 7) Run gitlab-runner on separate machine with docker-compose # Install docker curl -fsSL https://get.docker.com -o get-docker.sh DRY_RUN=1 sh ./get-docker.sh sh ./get-docker.sh # Install docker-compose curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose # Get files git checkout https://github.com/tldr-devops/startpack.git --depth=1 cd startpack # Prepare environment mkdir -p {builds,cache} export DOMAIN="Your domain" export HASHED_PASSWORD="HASHED_PASSWORD from step 4" envsubst < configs/gitlab-runner.toml > ./config.toml # Run runner in docker with docker-compose docker-compose -f gitlab-runner.yml up -d # Check runners logs docker-compose -f gitlab-runner.yml logs -f 8) Login into your docker registry on all docker hosts docker login -u "Your REGISTRY_USERNAME from step 4" -p "Your REGISTRY_PASSWORD from step 4" registry."YOUR DOMAIN" 9) You should configure backups of your server, at least $DATAPATH directory About Selfhosted tech starter pack for development of new project or startup Topics gitlab monitoring docker-compose docker-swarm postgresql starter mariadb minio startup starter-kit taiga strapi openproject portainer bitwarden traefic appwrite nocodb Resources Readme License MIT License Stars 216 stars Watchers 2 watching Forks 9 forks Languages * Shell 100.0% * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.