No description
- Shell 71.8%
- Makefile 17.9%
- Jinja 10.3%
handbook.md describes how the team manages projects and repositories. SIIRTO.md describes moving to another provider, with the S3 bucket staying at Hetzner as an offsite copy. RUNBOOK and KIRJAUTUMINEN now record what has been tested under each heading. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| roles | ||
| scripts | ||
| .gitattributes | ||
| .gitignore | ||
| architecture.svg | ||
| config.yml | ||
| handbook.md | ||
| inventory.example.ini | ||
| KIRJAUTUMINEN.md | ||
| Makefile | ||
| README.md | ||
| requirements.yml | ||
| RUNBOOK.md | ||
| SIIRTO.md | ||
| site.yml | ||
| vars.example.yml | ||
forgejo-host
Forgejo Git-palvelimeksi yhdellä virtuaalikoneella.
Tavoite
- Forgejo pyörii virtuaalikoneella ja isännöi Git-repojamme.
- Se päivittää itsensä automaattisesti.
- Se vaatii mahdollisimman vähän käsin tehtävää ylläpitoa.
- Koko VM on vain Forgejoa varten, joten asennus pysyy hyvin yksinkertaisena.
Suunnitelma
Asennus on rakennettu ja testattu dev1-koneella: asennus, varmuuskopio, palautus ja uudelleenkäynnistys toimivat. Käyttöohjeet ovat tiedostossa RUNBOOK.md, ja lyhyet komennot näkyvät ajamalla make.
- Käyttäjät: noin kuuden hengen tiimi. Repot ovat yksityisiä, kirjautuminen on pakollinen, rekisteröityminen on pois päältä ja ylläpitäjä luo tilit. Demon ajaksi kirjautumispakko on pois päältä, katso Ennen tuotantoa.
- Palvelin: yksi käsin tehty Hetzner-VM, AlmaLinux 10, SELinux enforcing-tilassa. Ei Dockeria. Tuotanto tehdään uudelle koneelle.
- Verkko: Caddy hoitaa TLS:n, sertifikaatin ja HSTS:n, ja Forgejo kuuntelee vain paikallisesti. Git SSH toimii portissa 22.
- Suojaus: SELinux rajaa Postgresia, mutta ei Forgejoa, jota rajataan systemd-asetuksilla.
- Ylläpito: henkilökohtaiset sudo-käyttäjät
config.yml-tiedostossa. Root ei pääse kirjautumaan. - Osoite: toistaiseksi
forgejo.jrcloud.devtestiympäristönä. Domain on yksi Ansible-muuttuja. - Tietokanta: Postgres 18, PGDG:n paketeista.
- Asetukset:
config.ymlon Gitissä, javars.ymlsisältää vain salaisuudet vaultissa. - Periaate: palvelimen odotettu tila on kirjoitettu Ansibleen niin pitkälle kuin mahdollista, eikä konetta muuteta käsin.
Yöajo
Yksi skripti ja yksi ajastin, aikaan jolloin kukaan ei työskentele:
- Varmuuskopio S3:een.
- Käyttöjärjestelmän pakettien päivitys.
- Forgejon päivitys LTS-linjan sisällä.
- Uudelleenkäynnistys, jos
needs-restarting -rsitä vaatii. - Tarkistus, että Forgejo vastaa.
Epäonnistunut varmuuskopio tuottaa hälytyksen, mutta ei estä tietoturvapäivityksiä. Pääversiopäivitykset eivät ole automaattisia, vaan tavoiteversio vaihdetaan config.yml:ssä ja ajetaan Ansible.
Varmuuskopiot
- Malli: tunnin välein
pg_dumpja restic S3:een. Sama ajo ottaa tietokannan, repot, liitteet ja konfiguraation, joten ne ovat lähes samalta hetkeltä. Menetettävää dataa on enintään noin tunti. - Paikallinen kopio: viimeisin dump jää koneelle nopeaa palautusta varten.
- Kohde: Hetzner Object Storage.
- Hälytykset: epäonnistuneet ajot ja vähäinen levytila. Ping-osoitteet lisätään myöhemmin.
- Salaisuudet: VM:llä töitä varten vain rootin luettavissa, ja kopio on tallessa Ansible Vaultissa ja salasanamanagerissa.
Palautuksen testaus
- Viikoittain, automaattisesti, VM:llä: palautus väliaikaiseen paikkaan, väliaikainen Postgres, datan tarkistus ja
git fsckpalautetulle repolle. - Ennen käyttöönottoa ja noin kerran vuodessa, käsin: täysi palautus uudelle VM:lle pelkästään vanhan koneen ulkopuolella olevilla tiedoilla.
- Testit ja oikeat palautukset käyttävät samaa palautusskriptiä:
make restore-testjamake restore SNAPSHOT=id.
Ennen tuotantoa
Demoa varten julkiset repot on sallittu tilapäisesti. Nämä on palautettava ennen tuotantoa:
- Tiedostossa
app.ini.j2takaisinREQUIRE_SIGNIN_VIEW = truejaFORCE_PRIVATE = true, minkä jälkeenmake deploy. - Demoa varten julkisiksi vaihdetut repot takaisin yksityisiksi Forgejossa.
FORCE_PRIVATEei muuta olemassa olevia repoja.
Myöhemmin
- CrowdSec: suojaamaan palvelua hyökkäysyrityksiltä.
- Hälytykset: ping-osoitteet, ennen tuotantoa.
- Bucketin versiointi ja säilytyssääntö: auditoinnin kohta H1.
- Sähköposti ja CI.
- Tuotannon domain.