瀏覽代碼

feat: indie webring

pull/5/head
Rohan Verma 6 年之前
父節點
當前提交
69e62d8797
共有 2 個文件被更改,包括 223 次插入3 次删除
  1. +218
    -2
      content/blog/2019/2019-11-15-selfhosted-netlify.md
  2. +5
    -1
      layouts/partials/footer/hcard.html

+ 218
- 2
content/blog/2019/2019-11-15-selfhosted-netlify.md 查看文件

@@ -1,7 +1,7 @@
+++
title = "Self hosted Netlify using docker-compose, gitea, and drone-ci"
date = 2019-11-15T15:30:03+05:30
draft = false
draft = true
tags = ["golang", "docker", "self hosted"]
categories = ["tutorials"]
type = "post"
@@ -12,4 +12,220 @@ author = "Rohan Verma"
I had been using netlify to deploy a few of my static sites. The process for
deployment is seamless and all you need to do is push to master. Pushing to
the develop branch or creating a pull request on github creates a mirror
with a unique URL which
with a unique URL which can be used to preview the site.

It worked well, but I often feel that I will eventually be tied down or stuck
to the service. One day the pricing will change or the service will
disappear. Also, for my small static sites, the features it offers are too much.

I also wanted to setup CI/CD for my other projects, and setting up my own CI/CD
pipeline and migrating static sites would be a good easy step to start.

This article is derived from [Self-hosting with Docker](https://blog.ssdnodes.com/blog/self-hosting-handbook/) by [Joel Hans](https://blog.ssdnodes.com/blog/author/joel/). I might skip a few details, which are covered there.

```yaml
version: '2'

services:

proxy:
image: jwilder/nginx-proxy
container_name: proxy
restart: unless-stopped
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- certs:/etc/nginx/certs:rw
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- ./uploadsize.conf:/etc/nginx/conf.d/uploadsize.conf:ro
ports:
- "80:80"
- "443:443"
networks:
- "default"
- "proxy-tier"

proxy-letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: letsencrypt
restart: unless-stopped
environment:
- NGINX_PROXY_CONTAINER=proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
- "proxy"
depends_on:
- "proxy"
networks:
- "default"
- "proxy-tier"

portainer:
image: portainer/portainer
container_name: portainer
restart: always
environment:
- VIRTUAL_HOST=docker.rohanverma.net
- LETSENCRYPT_HOST=docker.rohanverma.net
- [email protected]
volumes:
- ./portainer/:/data
- /var/run/docker.sock:/var/run/docker.sock
privileged: true
ports:
- "9000:9000"

gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
environment:
- VIRTUAL_HOST=gitea.rohanverma.net
- LETSENCRYPT_HOST=gitea.rohanverma.net
- [email protected]
- VIRTUAL_PORT=3000
- ROOT_URL=https://gitea.rohanverma.net
- DOMAIN=gitea.rohanverma.net
- PROTOCOL=http
- USER_UID=1000
- USER_GID=1000
volumes:
- ./gitea:/data
ports:
- "5000:3000"
- "222:22"
networks:
- proxy-tier
- default

drone:
container_name: drone
image: drone/drone:latest
restart: always
environment:
- DRONE_GITEA_SERVER=https://gitea.rohanverma.net
- DRONE_GIT_ALWAYS_AUTH=false
- DRONE_RUNNER_CAPACITY=3
- DRONE_SERVER_HOST=drone.rohanverma.net
- DRONE_SERVER_PROTO=https
- DRONE_TLS_AUTOCERT=false
- DRONE_RPC_SECRET=xxxxxxxx
- DRONE_GITEA_CLIENT_ID=xxxxxxxxxxxxxxxxx
- DRONE_GITEA_CLIENT_SECRET=xxxxxxxxxxxxxxxxxx
- VIRTUAL_HOST=drone.rohanverma.net
- VIRTUAL_PORT=80
- DRONE_USER_CREATE=username:rhnvrm,admin:true
- DRONE_DEBUG=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./drone:/data
privileged: true
ports:
- "5151:80"
networks:
- default

drone-agent:
container_name: drone-agent
image: drone/agent:latest
command: agent
restart: always
depends_on:
- drone
privileged: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_SERVER=https://drone.rohanverma.net
- DRONE_RPC_SECRET=xxxxxxxx
- DRONE_RUNNER_CAPACITY=3
- DRONE_RUNNER_NAME="local"
networks:
- default

rohanvermanet:
container_name: rohanvermanet
build:
dockerfile: Dockerfile
context: ../apps/rohanverma.net
ports:
- "8080:80"
environment:
- VIRTUAL_HOST=rohanverma.net
- LETSENCRYPT_HOST=rohanverma.net
- [email protected]

nextrohanvermanet:
container_name: nextrohanvermanet
build:
dockerfile: Dockerfile
context: ../apps/next.rohanverma.net
ports:
- "8079:80"
environment:
- VIRTUAL_HOST=next.rohanverma.net
- LETSENCRYPT_HOST=next.rohanverma.net
- [email protected]

volumes:
certs:
vhost.d:
html:

networks:
proxy-tier:

```

The drone.yml file

```yml
---
kind: pipeline
type: docker
name: default

steps:
- name: ssh commands for rohanverma.net
image: appleboy/drone-ssh
when:
branch:
- master
settings:
host: 159.89.175.2
username: deploy
port: 22
key:
from_secret: ssh_key
script_stop: true
script:
- cd /home/rhnvrm/apps/rohanverma.net
- git fetch origin
- git checkout origin/master
- cd /home/rhnvrm/proxy
- docker-compose build rohanvermanet
- docker-compose up -d rohanvermanet

- name: ssh commands for next.rohanverma.net
image: appleboy/drone-ssh
when:
branch:
- develop
settings:
host: 159.89.175.2
username: deploy
port: 22
key:
from_secret: ssh_key
script_stop: true
script:
- cd /home/rhnvrm/apps/next.rohanverma.net
- git fetch origin
- git checkout origin/develop
- cd /home/rhnvrm/proxy
- docker-compose build nextrohanvermanet
- docker-compose up -d nextrohanvermanet
```

+ 5
- 1
layouts/partials/footer/hcard.html 查看文件

@@ -9,4 +9,8 @@
rhnvrm
</a>
</p>
<hr>
<hr>

<a href="https://xn--sr8hvo.ws/%E2%98%A0%F0%9F%8D%97%F0%9F%8F%A4/previous">←</a>
IndieWeb Webring 🕸💍
<a href="https://xn--sr8hvo.ws/%E2%98%A0%F0%9F%8D%97%F0%9F%8F%A4/next">→</a>

Loading…
取消
儲存