diff options
author | Wojtek Kosior <koszko@koszko.org> | 2022-11-21 13:55:12 +0100 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2022-11-21 13:55:12 +0100 |
commit | 9bc697b85a69af4d1a270aa5272db150c98bed42 (patch) | |
tree | 93d3d1172ef9fc6de8dad6e56e8226146722029e /container.scm | |
download | koszko-org-server-9bc697b85a69af4d1a270aa5272db150c98bed42.tar.gz koszko-org-server-9bc697b85a69af4d1a270aa5272db150c98bed42.zip |
initial commit
Diffstat (limited to 'container.scm')
-rw-r--r-- | container.scm | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/container.scm b/container.scm new file mode 100644 index 0000000..628e2b3 --- /dev/null +++ b/container.scm @@ -0,0 +1,99 @@ +;; SPDX-License-Identifier: CC0-1.0 + +;; Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org> +;; +;; Available under the terms of Creative Commons Zero v1.0 Universal. + +(use-modules (gnu)) +(use-modules (koszko-org-website)) +(use-package-modules web) +(use-service-modules web) +(use-service-modules shepherd) + +(define %koszko-org-virtualhost + (httpd-virtualhost + "*:80" + (list "\ + ServerName koszko.org + ServerAlias www.koszko.org + DocumentRoot /srv/http/koszko.org + ServerAdmin koszko@koszko.org + + <If \"%{HTTP_HOST} != 'koszko.org'\"> + Redirect permanent / http://koszko.org/ + </If> + + Alias /sideload /srv/http/koszko.org + + WSGIScriptReloading On + " + #~(let* ((script-rel "/share/koszko-org-website/wsgi.py") + (wsgi-file (string-append #$koszko-org-website script-rel))) + (format #f + "\ + <Files ~s> + Require all granted + </Files> + WSGIScriptAlias / ~a + " + wsgi-file wsgi-file))))) + +(define %wsgi-module + (httpd-module + (name "wsgi_module") + (file (file-append mod-wsgi "/modules/mod_wsgi.so")))) + +;; logio is needed for the '%O' log format directive +(define %logio-module + (httpd-module + (name "logio_module") + (file (file-append httpd "/modules/mod_logio.so")))) + +(define %logformat-combined + "\"%h %l %u %t \\\"%r\\\" %>s %O \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\"") + +(define %koszko-httpd-service + (service + httpd-service-type + (httpd-configuration + (config + (httpd-config-file + (server-name "koszko.org") + (error-log "/var/log/httpd/error.log") + (modules (cons* %wsgi-module %logio-module %default-httpd-modules)) + (extra-config + (list + (string-join `("LogFormat" ,%logformat-combined "combined")) "\n" + "ErrorLog /var/log/httpd/error.log" "\n" + "CustomLog /var/log/httpd/access.log combined" "\n" + ))))))) + +(operating-system + (host-name "koszko") + (timezone "Europe/Warsaw") + + (file-systems (cons (file-system + (device (file-system-label "does-not-matter")) + (mount-point "/") + (type "ext4")) + %base-file-systems)) + (bootloader (bootloader-configuration + (bootloader grub-bootloader) + (targets '("/dev/sdDOES-NOT-MATTER")))) + (services + (cons* %koszko-httpd-service + (simple-service 'koszko-org-website httpd-service-type + (list %koszko-org-virtualhost)) + (service + (shepherd-service-type + 'dummy-network + (const + (shepherd-service + (documentation "Provide 'networking' without actually doing anything") + (provision '(networking)) + (start #~(const #t)) + (stop #~(const #t)) + (respawn? #f))) + (description "Make other services assume network is there.")) + #f) + %base-services))) |