#+TITLE: Project hosting setup #+DATE: 2018-11-24 17:22:41 UTC #+DESCRIPTION: Simple static site hosting. #+FILETAGS: draft #+LATEX_CLASS: article #+CATEGORY: cato #+SLUG: project-hosting-setup Quick and simple code hosting and CI on a local rasobery pi or in the cloud I use a cheap digitalocen droplet, if you decide to sign up and do the same please use this link and help me out. https://m.do.co/c/f05b87f9fec9 First create a =docker-compose.yml= file, you will need to specify some config in a separate env file. This compose file brings up caddy as a http server and postgres as the database to persist your data. It then uses drone ci linked with gitea for code hosting and continuous integration. #+BEGIN_SRC yaml version: '2' volumes: sockets: driver: local postgres_data: driver: local postgres_backup: driver: local services: caddy: image: caddy volumes: - /var/www:/var/www - /var/www/project-hosting-setup/data/caddy/:/data - /var/www/project-hosting-setup/Caddyfile:/etc/caddy/Caddyfile - sockets:/data/sockets ports: - "80:80" - "443:443" postgres: image: postgres:9.6 mem_limit: 256m volumes: - postgres_data:/var/lib/postgresql/data - postgres_backup:/backups env_file: .env gitea: image: gitea/gitea:1.18.3 depends_on: - postgres ports: - "10022:22" volumes: - ./data/gitea:/data restart: always drone-server: image: drone/drone:2.16 volumes: - /root/.docker/config.json:/root/.docker/config.json - /var/run/docker.sock:/var/run/docker.sock - ./data/dronenew:/var/lib/drone/ depends_on: - gitea env_file: .env #+END_SRC Create a =Caddyfile= which will reverse proxy through to your git and ci containers. #+BEGIN_SRC text ci.mydomain.com:443 { reverse_proxy * drone-server:80 } git.mydomain.com:443 { reverse_proxy * gitea:3000 } #+END_SRC https://caddy.community/t/serving-tens-of-thousands-of-domains-over-https-with-caddy/11179 Finally create a =.env= file to store your configuration