Initial commit
Signed-off-by: Jacob Kiers <code@kiers.eu>
This commit is contained in:
commit
a91948a60f
7
.dockerignore
Normal file
7
.dockerignore
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.dockerignore
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
docker-compose.yml
|
||||||
|
node_modules
|
||||||
|
helpers/*
|
||||||
|
runner/*
|
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
.env
|
||||||
|
runner/.env
|
||||||
|
secrets.txt
|
||||||
|
.tags
|
||||||
|
.vscode/*
|
36
CloudronManifest.json
Normal file
36
CloudronManifest.json
Normal file
@ -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/"
|
||||||
|
}
|
18
Dockerfile
Normal file
18
Dockerfile
Normal file
@ -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" ]
|
45
Makefile
Normal file
45
Makefile
Normal file
@ -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}
|
5
README.md
Normal file
5
README.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Cloudron Headscale
|
||||||
|
|
||||||
|
This is the repository to create a headscale server for cloudron.
|
||||||
|
|
||||||
|
|
19
setup/config/nginx/sites-available/powerdns.conf
Normal file
19
setup/config/nginx/sites-available/powerdns.conf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
client_body_temp_path /run/client_body;
|
||||||
|
proxy_temp_path /run/proxy_temp;
|
||||||
|
fastcgi_temp_path /run/fastcgi_temp;
|
||||||
|
scgi_temp_path /run/scgi_temp;
|
||||||
|
uwsgi_temp_path /run/uwsgi_temp;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 3000;
|
||||||
|
|
||||||
|
root /app/code/static;
|
||||||
|
|
||||||
|
location /api/ {
|
||||||
|
proxy_pass http://127.0.0.1:8082;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
proxy_read_timeout 86400;
|
||||||
|
}
|
||||||
|
}
|
10
setup/config/supervisor/conf.d/nginx.conf
Normal file
10
setup/config/supervisor/conf.d/nginx.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[program:nginx]
|
||||||
|
directory=/tmp
|
||||||
|
command=/usr/sbin/nginx -g "daemon off;"
|
||||||
|
user=root
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stderr_logfile_maxbytes=0
|
10
setup/config/supervisor/conf.d/powerdns-server.conf
Normal file
10
setup/config/supervisor/conf.d/powerdns-server.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[program:powerdns-server]
|
||||||
|
command=/usr/sbin/pdns_server --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no --config-dir=/app/data/config/pdns.conf
|
||||||
|
directory=/app/data
|
||||||
|
user=cloudron
|
||||||
|
autostart=true
|
||||||
|
autorestart=true
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/stderr
|
||||||
|
stderr_logfile_maxbytes=0
|
17
setup/data/README.md
Normal file
17
setup/data/README.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# PowerDNS Authoritative Server
|
||||||
|
|
||||||
|
Hey there!
|
||||||
|
|
||||||
|
This app contains a [PowerDNS Authoritative DNS server](https://doc.powerdns.com/authoritative/).
|
||||||
|
With this, you have the full power of PowerDNS at your fingertips.
|
||||||
|
|
||||||
|
By default, it is configured as a primary server. The configuration is stored
|
||||||
|
in the file called `/app/data/config/pdns.conf` and the `pdns.d` subdirectory.
|
||||||
|
|
||||||
|
After you have made changes to it you can restart just powerdns-server by running
|
||||||
|
`supervisorctl restart powerdns-server`.
|
||||||
|
|
||||||
|
It uses the sqlite3 backend, and has an administrative web interface. For
|
||||||
|
security purposes this is disabled by default. In order to use the admin
|
||||||
|
interface, you must change the webserver and api settings in the
|
||||||
|
`01-api.conf` file.
|
11
setup/data/config/pdns.conf
Normal file
11
setup/data/config/pdns.conf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#################################
|
||||||
|
# include-dir Include *.conf files from this directory
|
||||||
|
#
|
||||||
|
# include-dir=
|
||||||
|
include-dir=/app/data/config/pdns.d
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# launch Which backends to launch and order to query them in
|
||||||
|
#
|
||||||
|
# launch=
|
||||||
|
launch=
|
16
setup/data/config/pdns.d/00-pdns.conf
Normal file
16
setup/data/config/pdns.d/00-pdns.conf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
local-address=::1,0.0.0.0
|
||||||
|
|
||||||
|
primary=yes
|
||||||
|
version-string=anonymous
|
||||||
|
|
||||||
|
allow-axfr-ips=127.0.0.0/8,::1,2a02:a470:2cda::/48,2a01:4f8:c17:7865::/64,2607:7c80:54:6::53,204.87.183.53
|
||||||
|
allow-dnsupdate-from=127.0.0.0/8,::1,fe80::/10,2a02:a470:2cda::/48
|
||||||
|
|
||||||
|
default-soa-content=dns.home.kie.rs hostmaster.@ 0 10800 3600 604800 3600
|
||||||
|
default-soa-edit=INCEPTION-INCREMENT
|
||||||
|
|
||||||
|
launch+=gsqlite3
|
||||||
|
gsqlite3-database=/app/data/db/pdns.sqlite3
|
||||||
|
gsqlite3-dnssec=yes
|
||||||
|
|
||||||
|
|
27
setup/data/config/pdns.d/01-api.conf
Normal file
27
setup/data/config/pdns.d/01-api.conf
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Webserver and API configuration
|
||||||
|
|
||||||
|
# In order to enable the administrative interface, make sure that the
|
||||||
|
# following three keys are updated.
|
||||||
|
#
|
||||||
|
# Generate a secure API key with the following command:
|
||||||
|
# `LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c32`
|
||||||
|
#
|
||||||
|
# This API key is also the password for the web interface.
|
||||||
|
webserver=no
|
||||||
|
api=no
|
||||||
|
api-key=HereYourSuperSecureApiKeyWhichIsAlsoThePasswordForTheAdminInterface
|
||||||
|
|
||||||
|
|
||||||
|
# Listen address for the webserver. Defaults to everywhere, so the API can reach it.
|
||||||
|
webserver-address=0.0.0.0
|
||||||
|
|
||||||
|
# The webserver port to listen on. Do not change this.
|
||||||
|
webserver-port=8082
|
||||||
|
|
||||||
|
# Where to allow requests from. Basic firewall.
|
||||||
|
# Update this to allow the API to work.
|
||||||
|
webserver-allow-from=127.0.0.0/8,::1,fe80::/10,0.0.0.0/0,::/0
|
||||||
|
|
||||||
|
# Controls the verbosity of webserver logging
|
||||||
|
# Accepted values: none, normal, detailed
|
||||||
|
webserver-loglevel=normal
|
5
setup/data/config/pdns.d/02-logging.conf
Normal file
5
setup/data/config/pdns.d/02-logging.conf
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
loglevel=5
|
||||||
|
|
||||||
|
log-dns-details=yes
|
||||||
|
log-dns-queries=yes
|
||||||
|
log-timestamp=yes
|
Loading…
Reference in New Issue
Block a user