{"id":15081575,"url":"https://github.com/deekayen/ansible-lttlefish","last_synced_at":"2026-01-02T17:50:21.809Z","repository":{"id":138908823,"uuid":"560598617","full_name":"deekayen/ansible-lttlefish","owner":"deekayen","description":"Configuration for my personal cloud on a public OpenBSD host.","archived":false,"fork":false,"pushed_at":"2022-11-28T22:07:01.000Z","size":237,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-23T05:42:50.286Z","etag":null,"topics":["ansible","ansible-playbook","ansible-roles","dovecot-configuration","openbsd","opendkim","openntpd","postfix-configuration","squirrelmail"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deekayen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"deekayen","ko_fi":"deekayen","liberapay":"deekayen","custom":["paypal.me/deekayen","venmo.com/drdnorman","buymeacoff.ee/deekayen"]}},"created_at":"2022-11-01T21:06:13.000Z","updated_at":"2022-11-27T19:43:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"8bfc4a6b-9b9a-4a7d-baae-083a227126d6","html_url":"https://github.com/deekayen/ansible-lttlefish","commit_stats":{"total_commits":142,"total_committers":2,"mean_commits":71.0,"dds":"0.028169014084507005","last_synced_commit":"c1b1b930e32689e116eaa714424cb27776b9afc0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deekayen%2Fansible-lttlefish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deekayen%2Fansible-lttlefish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deekayen%2Fansible-lttlefish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deekayen%2Fansible-lttlefish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deekayen","download_url":"https://codeload.github.com/deekayen/ansible-lttlefish/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243918630,"owners_count":20368745,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-playbook","ansible-roles","dovecot-configuration","openbsd","opendkim","openntpd","postfix-configuration","squirrelmail"],"created_at":"2024-09-25T06:00:36.580Z","updated_at":"2026-01-02T17:50:21.759Z","avatar_url":"https://github.com/deekayen.png","language":"Jinja","funding_links":["https://github.com/sponsors/deekayen","https://ko-fi.com/deekayen","https://liberapay.com/deekayen","paypal.me/deekayen","venmo.com/drdnorman","buymeacoff.ee/deekayen"],"categories":[],"sub_categories":[],"readme":"# lttle-ansible-bootstrap\n\n![Unlicense](https://img.shields.io/badge/license-Unlicense-blue.svg)\n\nI don't really intend for this repo to be consumed as a generic, re-usable\nconfiguration. It's strictly intended to meet my personal needs.\n\nInstalls and configures various things with:\n\n* Apache\n* PHP\n* ownCloud\n* OpenVPN\n* Dovecot/Postfix/procmail\n* ntpd\n\nIf I'm really in an Ansible mood, I could generate a temporary\nLinode API key and use Ansible to create my Atlanta-based Linode\nusing the standalone playbook in the directory root.\n\nTo keep the playbook idempotent and secure, the first time it runs, it\nwill create random passwords for the MariaDB root user, NextCloud, and\nmail user. The passwords to those accounts will be saved on the remote\nserver in appropriate configuration files instead of in the global_vars\nof this Ansible playbook like most other templates you'll find on\nGithub. Though these files are uploaded in-whole on the first run as\ntemplates, they won't upload again after that because the remote server\nis treated as the master copy of the passwords on these files:\n\n* `/root/.my.cnf`\n* `/var/www/nextcloud/config/config.php`\n* `/etc/dovecot/dovecot-sql.conf.ext`\n* `/etc/postfix/mysql-virtual-alias-maps.cf`\n* `/etc/postfix/mysql-virtual-mailbox-domains.cf`\n* `/etc/postfix/mysql-virtual-mailbox-maps.cf`\n\n## System setup\n\nThis setup filled the `/usr/local`.\n```\nlttlefish# df -h\nFilesystem     Size    Used   Avail Capacity  Mounted on\n/dev/wd0a      989M   75.4M    865M     8%    /\n/dev/wd0h      482M   20.0K    458M     0%    /home\n/dev/wd0d      989M    6.0K    940M     0%    /tmp\n/dev/wd0e      2.7G    1.2G    1.4G    46%    /usr\n/dev/wd0f      1.9G   1019M    867M    54%    /usr/local\n/dev/wd0g      989M    2.0K    940M     0%    /usr/src\n/dev/wd0i     13.3G   60.9M   12.5G     0%    /var\n```\n\nThis is setup for a 2G shared linode.\n```\nlttlefish# df -h\nFilesystem     Size    Used   Avail Capacity  Mounted on\n/dev/wd0a      989M   74.9M    865M     8%    /\n/dev/wd0e      1.1G   18.0K    1.0G     0%    /home\n/dev/wd0d      1.5G   10.0K    1.5G     0%    /tmp\n/dev/wd0f      4.8G    1.2G    3.4G    27%    /usr\n/dev/wd0g      6.5G    218K    6.2G     0%    /usr/local\n/dev/wd0h     30.4G    5.9M   28.9G     0%    /var\n```\n\n## Bootstrapping from scratch\n\n* Install everything for OS, minus games, xserv, and xshare. xbase and xfont are needed for gd and imagemagik.\n* Add authorized_keys to ~/.ssh/\n* Install python3 so Ansible has an interpreter\n  * `pkg_add python3`\n  * `pkg_add py3-pip`\n* Create a cert\n  * `pkg_add certbot`\n  * `certbot certonly`\n\n    lttlefish# cd /etc/apache2/\n    lttlefish# ls\n    extra       httpd2.conf magic       mime.types\n    lttlefish# ln -s /etc/letsencrypt/live/deekayen.net/fullchain.pem server.crt\n    lttlefish# ln -s /etc/letsencrypt/live/deekayen.net/privkey.pem server.key\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeekayen%2Fansible-lttlefish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeekayen%2Fansible-lttlefish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeekayen%2Fansible-lttlefish/lists"}