SkillAgentSearch skills...

Startpack

Selfhosted tech starter pack for development of new project or startup

Install / Use

/learn @tldr-devops/Startpack

README

startpack

#StandWithBelarus <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Presidential_Standard_of_Belarus_%28fictional%29.svg/240px-Presidential_Standard_of_Belarus_%28fictional%29.svg.png" width="20" height="20" alt="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:

Available and planned open source components

Platform

Databases and Storage

Management

  • [DONE] Gitlab as git hosting and devops platform
  • [DONE] Nextcloud as cloud storage with plugins for email, 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

Miss something? Could you tell me more about how can I help you, please?

About the Author

Hello, everyone! My name is Filipp, and I have been working with high load distribution systems and services, security, monitoring, continuous deployment and release management (DevOps domain) since 2012.

One of my passions is developing DevOps solutions and contributing to the open-source community. By sharing my knowledge and experiences, I strive to save time for both myself and others while fostering a culture of collaboration and learning.

I had to leave my home country, Belarus, due to my participation in protests against the oppressive regime of dictator Lukashenko, who maintains a close affiliation with Putin. Since then, I'm trying to build my life from zero in other countries.

If you are seeking a skilled DevOps lead or architect to enhance your project, I invite you to connect with me on LinkedIn or explore my valuable contributions on GitHub. Let's collaborate and create some cool solutions together :)

Support

You can support this or any other of my projects

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 TELEPORT_TOKEN=$(echo $RANDOM `date`|md5sum|base64)\n$(cat env.sh)" > env.sh
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
bas
View on GitHub
GitHub Stars1.2k
CategoryDevelopment
Updated21h ago
Forks65

Languages

Shell

Security Score

100/100

Audited on Apr 3, 2026

No findings