diff --git a/.drone-home.star b/.drone-home.star index d36514a..11ce8ed 100644 --- a/.drone-home.star +++ b/.drone-home.star @@ -6,10 +6,12 @@ def main(ctx): ctx, "home-deploy", "/stack/deploy", - "gitea", + "stack", [ - "docker service scale gitea_ngrok=1", - "docker service scale gitea_chat=1", + "docker service scale stack_ngrok=1", + "docker service scale stack_chat=1", + "docker service scale stack_letsencrypt-drone=1", + "docker service scale stack_letsencrypt-git=1", ] ) \ No newline at end of file diff --git a/README.md b/README.md index 7486b2a..2b2655d 100644 --- a/README.md +++ b/README.md @@ -60,3 +60,90 @@ git checkout home-deploy ``` +### make certificates for the registry + +these certificates will be in .ca and .certificates +where $REGISTRY_DOMAIN is the host where the stack will run. + +``` +cd certificates +sh ca.sh $REGISTRY_DOMAIN:5003 +sh make-cert.sh $REGISTRY_DOMAIN registry +``` + +### make environment variables + +``` +export CERTBOT_EMAIL=giles.bradshaw@sigyl.com +export DRONE_DOMAIN=drone.git.sigyl.com +export DRONE_GITEA_CLIENT_ID= +export DRONE_GITEA_SERVER= +export DRONE_SERVER_HOST=drone.git.sigyl.com +export GIT_DOMAIN=git.sigyl.com +export LOCAL_DOCKER_REGISTRY=git.local-domain:5003/ +export SSH_USER=giles +export GUACAMOLE_POSTGRES_DB=guacamole_db +export GUACAMOLE_POSTGRES_USER=guacamole_user +export DRONE_CONVERT_SECRET=topsecret +export DRONE_GITEA_CLIENT_SECRET= +export DRONE_RPC_SECRET=topsecret2 +export GUACAMOLE_POSTGRES_PASSWORD=[passwordnospaces] +export NGROK_AUTH_TOKEN=[secret token from ngrok] +``` + +### build images + +where $STACK_HOME = /stack/deploy + +``` +sh build.sh $STACK_HOME +``` + +### initial deploy of stack + +``` +cd /stack/deploy +docker stack deploy -c docker-compose-home.yml stack +``` + +### initialise postgres database + +find postgres id as $ID + +``` +docker ps | grep stack_guacamole-postgresql.1 +``` + +``` +sh init-postgresql.sh $ID +``` + +## initialise mongo + +get mongo id as $ID + +``` +docker ps | grep stack_chat-mongo.1 +``` + +``` +sh init-mongo-chat.sh $ID +``` + + +### scale chat and ngrok and nginx + +``` +sh init-scale.sh stack +``` + +### create a gitea drone application + +set environment variables as follows (example values): + +``` +export DRONE_GITEA_SERVER=https://sigyl.com/git +export DRONE_GITEA_CLIENT_ID=38218ed5-cf18-47e7-1234-710173dae499 +export DRONE_GITEA_CLIENT_SECRET=ytsgdyXI_6zUrqwsI1wsssBAaUcsp27EyecT4nk5fA= +``` + diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..5222406 --- /dev/null +++ b/build.sh @@ -0,0 +1,12 @@ +set -e +cd $1/ngrok-gitea +docker build . -t ${LOCAL_DOCKER_REGISTRY}ngrok-gitea +cd $1/guacamole-postgresql +docker build . -t ${LOCAL_DOCKER_REGISTRY}guacamole-postgresql +cd $1/letsencrypt-nginx +docker build . -t ${LOCAL_DOCKER_REGISTRY}letsencrypt-nginx +cd $1/drone-starlark +docker build . -t ${LOCAL_DOCKER_REGISTRY}drone-starlark +cd $1/letsencrypt-nginx +sh build.sh Dockerfile.git ${LOCAL_DOCKER_REGISTRY}letsencrypt-nginx ${LOCAL_DOCKER_REGISTRY}letsencrypt-git +sh build.sh Dockerfile.drone ${LOCAL_DOCKER_REGISTRY}letsencrypt-nginx ${LOCAL_DOCKER_REGISTRY}letsencrypt-drone diff --git a/docker-compose-home.yml b/docker-compose-home.yml index 467f643..49d03bb 100644 --- a/docker-compose-home.yml +++ b/docker-compose-home.yml @@ -4,7 +4,7 @@ services: deploy: placement: constraints: [node.labels.com.sigyl.git-stack == yes] - replicas: 1 + replicas: 0 restart_policy: condition: any image: ${LOCAL_DOCKER_REGISTRY}letsencrypt-git @@ -36,7 +36,7 @@ services: deploy: placement: constraints: [node.labels.com.sigyl.git-stack == yes] - replicas: 1 + replicas: 0 restart_policy: condition: any image: ${LOCAL_DOCKER_REGISTRY}letsencrypt-drone diff --git a/guacamole-postgresql/init-user.sql b/guacamole-postgresql/init-user.sql index 6edcbd9..9ecfa61 100644 --- a/guacamole-postgresql/init-user.sql +++ b/guacamole-postgresql/init-user.sql @@ -1,3 +1,3 @@ -CREATE USER :'user' WITH PASSWORD :'password'; -GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO :'user'; -GRANT SELECT,USAGE ON ALL SEQUENCES IN SCHEMA public TO :'user'; \ No newline at end of file +CREATE USER :user WITH PASSWORD :'password'; +GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO :user; +GRANT SELECT,USAGE ON ALL SEQUENCES IN SCHEMA public TO :user; \ No newline at end of file diff --git a/init-mongo-chat.sh b/init-mongo-chat.sh new file mode 100644 index 0000000..6035052 --- /dev/null +++ b/init-mongo-chat.sh @@ -0,0 +1 @@ +docker exec -it $1 mongo --eval "printjson(rs.initiate({_id: 'rs0', members: [ { _id: 0, host: 'localhost:27017' } ]}))" diff --git a/init-postgresql.sh b/init-postgresql.sh new file mode 100644 index 0000000..8f24b71 --- /dev/null +++ b/init-postgresql.sh @@ -0,0 +1,2 @@ +docker exec -it $1 psql -U postgres -d $GUACAMOLE_POSTGRES_DB -f /initdb.sql +docker exec -it $1 psql -U postgres -d $GUACAMOLE_POSTGRES_DB -f /init-user.sql -v password=$GUACAMOLE_POSTGRES_PASSWORD -v user=$GUACAMOLE_POSTGRES_USER diff --git a/init-scale.sh b/init-scale.sh new file mode 100644 index 0000000..cf38b49 --- /dev/null +++ b/init-scale.sh @@ -0,0 +1,4 @@ +docker service scale $1_chat=1 +docker service scale $1_ngrok=1 +docker service scale $1_letsencrypt-drone=1 +docker service scale $1_letsencrypt-git=1 diff --git a/letsencrypt-nginx/build-docker-folder.sh b/letsencrypt-nginx/build-docker-folder.sh index ba7c6a4..831d026 100644 --- a/letsencrypt-nginx/build-docker-folder.sh +++ b/letsencrypt-nginx/build-docker-folder.sh @@ -1,3 +1,3 @@ set -e -docker build . -f $1 --build-arg image=$2 -t $3 +sh build.sh $1 $2 $3 docker push $3 diff --git a/letsencrypt-nginx/build.home.sh b/letsencrypt-nginx/build.home.sh deleted file mode 100644 index afc7c53..0000000 --- a/letsencrypt-nginx/build.home.sh +++ /dev/null @@ -1,3 +0,0 @@ -set -e -docker build . -f Dockerfile.home --build-arg image=nginx:latest -t $1nginx-home1 -docker push $1nginx-home1 diff --git a/letsencrypt-nginx/build.sh b/letsencrypt-nginx/build.sh index 94da20c..f5104b0 100644 --- a/letsencrypt-nginx/build.sh +++ b/letsencrypt-nginx/build.sh @@ -1,3 +1 @@ -set -e -docker build . -f Dockerfile.$1 --build-arg image=$2letsencrypt-nginx -t $2letsencrypt-$1 -docker push $2letsencrypt-$1 +docker build . -f $1 --build-arg image=$2 -t $3 diff --git a/n b/n deleted file mode 100644 index e69de29..0000000 diff --git a/ngrok-build.sh b/ngrok-build.sh deleted file mode 100644 index 3e827ae..0000000 --- a/ngrok-build.sh +++ /dev/null @@ -1,2 +0,0 @@ -docker build ngrok-gitea -t ${LOCAL_DOCKER_REGISTRY}/ngrok-gitea -docker push ${LOCAL_DOCKER_REGISTRY}/ngrok-gitea \ No newline at end of file diff --git a/postgres-build.sh b/postgres-build.sh deleted file mode 100644 index 683f849..0000000 --- a/postgres-build.sh +++ /dev/null @@ -1,2 +0,0 @@ -docker build guacamole-postgresql -t ${LOCAL_DOCKER_REGISTRY}/guacamole-postgresql -docker push ${LOCAL_DOCKER_REGISTRY}/guacamole-postgresql \ No newline at end of file