From a91948a60f840729f4bc5a1ed0a63a7a200a8e9d Mon Sep 17 00:00:00 2001 From: Jacob Kiers Date: Wed, 6 Dec 2023 22:23:52 +0100 Subject: [PATCH] Initial commit Signed-off-by: Jacob Kiers --- .dockerignore | 7 +++ .gitignore | 5 ++ CloudronManifest.json | 36 ++++++++++++++ Dockerfile | 18 +++++++ Makefile | 45 ++++++++++++++++++ README.md | 5 ++ logo.png | Bin 0 -> 14786 bytes .../nginx/sites-available/powerdns.conf | 19 ++++++++ setup/config/supervisor/conf.d/nginx.conf | 10 ++++ .../supervisor/conf.d/powerdns-server.conf | 10 ++++ setup/data/README.md | 17 +++++++ setup/data/config/pdns.conf | 11 +++++ setup/data/config/pdns.d/00-pdns.conf | 16 +++++++ setup/data/config/pdns.d/01-api.conf | 27 +++++++++++ setup/data/config/pdns.d/02-logging.conf | 5 ++ start.sh | 12 +++++ 16 files changed, 243 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 CloudronManifest.json create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 README.md create mode 100644 logo.png create mode 100644 setup/config/nginx/sites-available/powerdns.conf create mode 100644 setup/config/supervisor/conf.d/nginx.conf create mode 100644 setup/config/supervisor/conf.d/powerdns-server.conf create mode 100644 setup/data/README.md create mode 100644 setup/data/config/pdns.conf create mode 100644 setup/data/config/pdns.d/00-pdns.conf create mode 100644 setup/data/config/pdns.d/01-api.conf create mode 100644 setup/data/config/pdns.d/02-logging.conf create mode 100644 start.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..bb31638 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +.dockerignore +.git +.gitignore +docker-compose.yml +node_modules +helpers/* +runner/* diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c576c17 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.env +runner/.env +secrets.txt +.tags +.vscode/* diff --git a/CloudronManifest.json b/CloudronManifest.json new file mode 100644 index 0000000..d547dc4 --- /dev/null +++ b/CloudronManifest.json @@ -0,0 +1,36 @@ +{ + "version": "0.0.1", + "id": "com.powerdns.authoritative.cloudronapp", + "icon": "file://logo.png", + "healthCheckPath": "/", + "httpPort": 3000, + "tcpPorts": { + "DNS_TCP_PORT": { + "title": "TCP DNS Port", + "description": "TCP Port over which DNS requests are made", + "containerPort": 53, + "defaultValue": 53 + } + }, + "udpPorts": { + "DNS_UDP_PORT": { + "title": "UDP DNS Port", + "description": "UDP Port over which DNS requests are made", + "containerPort": 53, + "defaultValue": 53 + } + }, + "addons": { + "localstorage": {} + }, + "minBoxVersion": "7.1.2", + "manifestVersion": 2, + "website": "https://doc.powerdns.com/authoritative/", + "title": "PowerDNS Authoritative DNS", + "author": "PowerDNS developers", + "tagline": "Independent hosting of DNS domains", + "tags": [ + "dns" + ], + "documentationUrl": "https://doc.powerdns.com/authoritative/" +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f811fa7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768ba473078319a47f4 + +EXPOSE 8080 53 + +RUN apt-get install pdns-server pdns-backend-sqlite3 && \ + mkdir -p /app/pkg/dist && \ + curl --proto '=https' --tlsv1.2 -sSfL \https://github.com/james-stevens/powerdns-webui/raw/2d1a8c5a305f0534d49bf2c8be9a329458ae2fd6/htdocs/index.html \ + -o /app/pkg/static/index.html + +RUN sed -e 's,^logfile=.*$,logfile=/run/supervisord.log,' -i /etc/supervisor/supervisord.conf +ADD setup/config/ /etc + +COPY start.sh /app/pkg/ +COPY setup/data /app/pkg/data + +WORKDIR /app/data + +CMD [ "/app/pkg/start.sh" ] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4424bc0 --- /dev/null +++ b/Makefile @@ -0,0 +1,45 @@ +CLOUDRON_APP ?= powerdns +CLOUDRON_ID := $(shell jq -r .id CloudronManifest.json) +CLOUDRON_SERVER ?= my.kiers.eu +#CLOUDRON_TOKEN ?=123 +DOCKER_REPO ?= jacobkiers +CLOUDRON ?= cloudron + +.PHONY: default +default: build update + +.PHONY: init +init: + ${CLOUDRON} init + +.PHONY: build +build: + ${CLOUDRON} build --set-repository $(DOCKER_REPO)/$(CLOUDRON_ID) + +.PHONY: update +update: build + ${CLOUDRON} update --server ${CLOUDRON_SERVER} --app ${CLOUDRON_APP} + +.PHONY: update-ci +update-ci: + ${CLOUDRON} update --server ${CLOUDRON_SERVER} --app ${CLOUDRON_APP} + +.PHONY: install +install: build + ${CLOUDRON} install --location ${CLOUDRON_APP} + +.PHONY: uninstall +uninstall: + ${CLOUDRON} uninstall --app ${CLOUDRON_APP} + +.PHONY: install-debug +install-debug: + ${CLOUDRON} install --location ${CLOUDRON_APP} --debug + +.PHONY: exec +exec: + ${CLOUDRON} exec --app ${CLOUDRON_APP} + +.PHONY: logs +logs: + ${CLOUDRON} logs -f --app ${CLOUDRON_APP} diff --git a/README.md b/README.md new file mode 100644 index 0000000..a0b2f10 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Cloudron Headscale + +This is the repository to create a headscale server for cloudron. + + diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d49bdf0c538cf8eba915c3a75d0edde33f627d9f GIT binary patch literal 14786 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 Ensure permissions" +chown -R cloudron:cloudron /run /app/data + +exec /usr/bin/supervisord --configuration /etc/supervisor/supervisord.conf --nodaemon