Tämä repositorio sisältää Codebased Oy:lle toteutetun ARM64-pohjaisen on-premises-reunalaskentaympäristön dokumentaation, konfiguraatiot ja ylläpito-ohjeet. Ympäristö rakennettiin osana opinnäytetyötä, jonka tavoitteena oli siirtää ohjelmistokehityksen työkaluketju julkipilvestä kustannustehokkaaseen ja tietoturvalliseen Raspberry Pi 5 -pohjaiseen reunalaskentaympäristöön.
Ympäristö korvaa aiemman Hetzner Cloud -pohjaisen kehitysympäristön. Toteutuksessa painotetaan kustannustehokkuutta, datasuvereniteettia, Zero Trust -periaatetta, käyttöjärjestelmän koventamista, Docker Compose -pohjaista ylläpidettävyyttä sekä 3–2–1-varmuuskopiointikäytäntöä.
- Ympäristön tarkoitus
- Arkkitehtuuri
- Keskeiset teknologiat
- Tietoturvaperiaatteet
- Hakemistorakenne
- Ympäristön käyttö
- Pääsynhallinta
- Docker Compose -ylläpito
- Palveluiden päivitys
- TLS-sertifikaatit
- Varmuuskopiointi
- Palautus vikatilanteessa
- Tietoturvakovennukset
- Valvonta
- Yleiset vikatilanteet
- Ylläpidon tarkistuslista
Ympäristön tarkoituksena on tarjota Codebased Oy:lle oma, suljettu ja ylläpidettävä kehitystyökalujen alusta, joka ei ole riippuvainen julkipilvipalveluiden hinnanmuutoksista tai julkisesta internet-altistuksesta.
Ympäristössä ajetaan seuraavia kehitystyökaluja:
| Palvelu | Tarkoitus |
|---|---|
| GitLab CE | Lähdekoodin versionhallinta ja CI/CD |
| GitLab Runner | CI/CD-putkien suorittaminen |
| SonarQube | Koodin laadun ja teknisen velan analysointi |
| PostgreSQL | SonarQuben tietokanta |
| HashiCorp Vault | Salaisuuksien ja avainten hallinta |
| NGINX | Reverse proxy ja TLS-terminointi |
| Tailscale | Zero Trust -pohjainen yksityinen verkko |
| UFW | Palomuurisääntöjen hallinta |
| Restic | Salattu paikallinen varmuuskopiointi |
| rsync | Off-site-varmuuskopioiden synkronointi |
| NUT | UPS-laitteen valvonta ja hallittu alasajo |
Passbolt- ja Certbot-kontit poistettiin migraation yhteydessä arkkitehtuurin yksinkertaistamiseksi ja Raspberry Pi 5 -alustan kuorman keventämiseksi.
Ympäristö toimii Raspberry Pi 5 -laitteella, jossa on Ubuntu Server 24.04 LTS ARM64 -käyttöjärjestelmä. Palvelut suoritetaan Docker-kontteina Docker Compose -työkalun avulla.
Ympäristö ei avaa palveluita suoraan julkiseen internetiin. Kaikki hallinta- ja palveluyhteydet kulkevat Tailscale-verkon kautta. UFW-palomuuri sallii sisään tulevan liikenteen vain Tailscalen virtuaalisen verkkokortin kautta.
Yksinkertaistettu arkkitehtuuri:
Developer laptop
|
| Tailscale VPN / Zero Trust
|
Raspberry Pi 5 / Ubuntu Server 24.04
|
|-- UFW firewall
|-- Docker Compose
|
|-- nginx_lb
|-- gitlab
|-- gitlab_runner
|-- sonarqube
|-- postgres
|-- hvault
| Teknologia | Käyttötarkoitus |
|---|---|
| Raspberry Pi 5 | Fyysinen ARM64-palvelinalusta |
| Ubuntu Server 24.04 LTS | Palvelimen käyttöjärjestelmä |
| Docker | Konttien suoritusympäristö |
| Docker Compose | Palvelukokonaisuuden deklaratiivinen hallinta |
| Tailscale | Salattu yksityinen mesh-verkko |
| UFW | Host-tason palomuuri |
| NGINX | Reverse proxy |
| GitLab CE | Versionhallinta ja CI/CD |
| SonarQube | Staattinen koodianalyysi |
| HashiCorp Vault | Salaisuuksien hallinta |
| Restic | Salattu varmuuskopiointi |
| rsync | Off-site-synkronointi |
| NUT | UPS-hallinta |
| Ansible Lockdown | CIS Level 1 -kovennusten automatisointi |
| Ubuntu Security Guide | CIS-auditointi |
Ympäristön tietoturva perustuu seuraaviin periaatteisiin:
- Palvelinta ei altisteta suoraan julkiseen internetiin.
- Kaikki hallinta tapahtuu Tailscale-verkon kautta.
- UFW estää oletuksena kaiken sisään tulevan liikenteen.
- SSH-yhteydet sallitaan vain Tailscale-verkon kautta.
- SSH-salasanakirjautuminen poistetaan käytöstä tuotantokovennuksen jälkeen.
- Käyttöjärjestelmä kovennetaan CIS Level 1 -periaatteiden mukaisesti.
- Tarpeettomat palvelut ja paketit poistetaan.
- Automaattiset tietoturvapäivitykset otetaan käyttöön.
- Varmuuskopiot salataan ennen paikallista ja off-site-tallennusta.
- Salaisuuksia, avaimia, salasanoja tai
.env-tiedostoja ei tallenneta julkiseen Git-repositorioon. Huom!.env.exampletoimii mallina, varsinainen.envluodaan paikallisesti eikä sitä commitoida.
Repositorion suositeltu rakenne:
.
├── README.md
├── ansible-lockdown.yml
├── tailor.xml
├── cis_level1_server_OpenSCAP_Evaluation_Report.png
├── cis_level1_server_customized_OpenSCAP_Evaluation_Report.png
├── docker/
│ ├── docker-compose.yml
│ ├── .env
│ ├── gitlab/
│ │ └── gitlab.yml
│ ├── hashicorp-vault/
│ │ └── vault.yml
│ ├── nginx/
│ │ ├── nginx.yml
│ │ └── nginx.conf
│ └── sonarqube/
│ └── sonarqube.yml
├── raspberry-pi-5/
│ ├── 99-docker.conf
│ ├── 99-sonarqube.conf
│ ├── 99_docker_and_netdata_exclusions
│ ├── cis_disable_fs.conf
│ ├── crontab
│ ├── sysctl.conf
│ ├── backup-local.sh
│ ├── backup-offsite.sh
│ └── restore-example.sh
└── benchmarks/
└── README.md
Todellinen rakenne voi poiketa yllä olevasta, mutta ylläpitoperiaate on sama: Docker-, Tailscale-, varmuuskopiointi-, kovennus- ja dokumentaatiotiedostot pidetään versionhallinnassa erillään salaisuuksista.
docker/-hakemisto sisältää Docker Compose -ympäristön päämäärittelyt sekä palvelukohtaiset Compose-tiedostot GitLabille, SonarQubelle, HashiCorp Vaultille ja NGINX-käänteisvälityspalvelimelle.
raspberry-pi-5/-hakemisto sisältää Raspberry Pi 5 -palvelimen käyttöjärjestelmätason asetuksia, kuten sysctl-määrityksiä, Dockeriin ja SonarQubeen liittyviä konfiguraatioita, AIDE-poikkeuksia sekä ajastettavia ylläpito- ja varmuuskopiointikomentoja.
Juurihakemistossa sijaitsevat CIS Level 1 -kovennuksiin ja auditointiin liittyvät tiedostot. ansible-lockdown.yml kuvaa Ubuntu 24.04 -kovennusten automatisointia, tailor.xml sisältää Ubuntu Security Guide -auditoinnin räätälöinnin ja PNG-kuvat dokumentoivat CIS-auditoinnin tuloksia.
Palvelimelle kirjaudutaan vain Tailscale-verkon kautta.
ssh <käyttäjätunnus>@codebased-edgeVaihtoehtoisesti voidaan käyttää Tailscalen antamaa yksityistä IP-osoitetta:
ssh <käyttäjätunnus>@<tailscale-ip>Tarkista palvelimen Tailscale-tila:
tailscale statusTarkista palvelimen IP-osoitteet:
ip addrTarkista järjestelmän perustiedot:
hostnamectl
uname -a
uptime
df -h
free -hUuden kehittäjän pääsy edellyttää kahta vaihetta:
- Käyttäjän laite lisätään Codebased Oy:n Tailscale-ympäristöön.
- Palvelimelle luodaan henkilökohtainen Linux-käyttäjätili.
Luo uusi käyttäjä:
sudo adduser <käyttäjätunnus>Suositeltu käyttäjätunnusmuoto:
etunimen ensimmäinen kirjain + sukunimi
Esimerkki:
llimnell
Luo turvallinen väliaikainen salasana:
pwgen -s 12 1Pakota käyttäjä vaihtamaan salasana ensimmäisellä kirjautumiskerralla:
sudo chage -d 0 <käyttäjätunnus>Poista käyttäjä:
sudo deluser <käyttäjätunnus>Poista käyttäjä ja kotihakemisto:
sudo deluser --remove-home <käyttäjätunnus>Poista käyttäjän laite myös Tailscalen hallintapaneelista tai ACL-säännöistä.
Siirry Docker Compose -hakemistoon:
cd /path/to/repository/dockerTarkista konttien tila:
docker compose psKäynnistä kaikki palvelut:
docker compose up -dPysäytä kaikki palvelut:
docker compose downKäynnistä yksittäinen palvelu uudelleen:
docker compose restart <palvelun_nimi>Esimerkki:
docker compose restart gitlabNäytä kaikkien palveluiden lokit:
docker compose logs -fNäytä yksittäisen palvelun lokit:
docker compose logs -f gitlab
docker compose logs -f gitlab_runner
docker compose logs -f sonarqube
docker compose logs -f hvault
docker compose logs -f nginx_lbTarkista konttien resurssinkäyttö:
docker statsTarkista Dockerin levytilankäyttö:
docker system dfPoista käyttämättömät imaget, verkot ja build-cache:
docker system pruneÄlä suorita docker volume prune -komentoa tuotannossa ilman erillistä varmistusta, koska se voi poistaa pysyvää palveludataa.
Palveluiden päivitys tehdään muuttamalla kyseisen palvelun Docker image -versio konfiguraatiotiedostossa. Älä käytä sokkona latest-tagia tuotannossa.
Yleinen päivitysprosessi:
- Lue päivitettävän ohjelmiston viralliset release notes -tiedot.
- Tarkista ARM64-yhteensopivuus.
- Tarkista mahdollinen migraatiopolku.
- Ota varmuuskopio.
- Muuta image-versio Docker Compose -tiedostoon.
- Käynnistä palvelu uudelleen.
- Tarkista lokit.
- Testaa käyttöliittymä ja kirjautuminen.
- Commitoi muutos Git-repositorioon.
Esimerkki:
cd /path/to/repository/docker
docker compose pull gitlab
docker compose up -d gitlab
docker compose logs -f gitlabGitLabin päivityksissä on noudatettava GitLabin virallista päivityspolkua. Suuria versioloikkia ei pidä tehdä suoraan, koska tietokantamigraatiot voivat epäonnistua.
Tarkista GitLabin tila kontin sisältä:
docker exec -it gitlab gitlab-rake gitlab:check SANITIZE=trueTarkista GitLabin salaisuudet:
docker exec -it gitlab gitlab-rake gitlab:doctor:secretsEnnen SonarQuben päivitystä tarkista:
- Java-vaatimukset
- PostgreSQL-yhteensopivuus
- Plugin-yhteensopivuus
- ARM64-image-tuki
- SonarQuben upgrade notes
Tarkista SonarQuben lokit:
docker compose logs -f sonarqubeTarkista PostgreSQL-kontti:
docker compose logs -f postgresEnnen Vaultin päivitystä varmista, että:
- Vaultin data on varmuuskopioitu.
- Unseal-avaimet ovat turvallisesti saatavilla.
- OIDC-asetukset ja redirect URI -osoitteet on dokumentoitu.
- Vaultin konfiguraatiotiedosto ei sisällä salaisuuksia Git-repositoriossa.
Tarkista Vaultin tila:
docker exec -it hvault vault statusYmpäristössä ei käytetä erillistä Certbot-konttia, vaan TLS-sertifikaatit tuotetaan Tailscalen kautta. Sertifikaatit liitetään NGINX-konttiin Docker Compose -volyymin avulla.
Sertifikaattien uusiminen voidaan automatisoida cron-ajastuksella.
Tarkista nykyiset cron-ajastukset:
crontab -lEsimerkki sertifikaatin manuaalisesta luonnista tai uusimisesta:
sudo tailscale cert <palvelunimi>.<tailnet>.ts.netTarkista NGINX-konfiguraatio kontin sisällä:
docker exec -it nginx_lb nginx -tKäynnistä NGINX uudelleen:
docker compose restart nginx_lbYmpäristössä käytetään 3–2–1-varmuuskopiointimallia:
- Aktiivinen data Raspberry Pi 5 -palvelimella.
- Paikallinen salattu kopio USB-muistitikulla.
- Off-site-kopio Hetzner Storage Box -palvelussa.
Varmuuskopiointi perustuu Resticiin ja rsynciin.
CIS Level 1 -kovennusten yhteydessä USB-massamuistin automaattinen käyttö on estetty modprobe.d-asetuksilla. Tämä näkyy järjestelmässä esimerkiksi riveinä:
/etc/modprobe.d/CIS.conf:install usb-storage /bin/true
/etc/modprobe.d/blacklist.conf:blacklist usb-storagePaikallista USB-varmuuskopiota varten kovennusta ei poisteta pysyvästi, vaan usb-storage-kernelmoduuli ladataan hallitusti vain varmuuskopiointiprosessin ajaksi:
sudo modprobe --ignore-install usb-storageTämän jälkeen USB-muistitikku voidaan liittää /mnt/usb-hakemistoon ja Restic-varmuuskopiointi voidaan suorittaa normaalisti. Varmuuskopioinnin jälkeen USB-muisti irrotetaan hallitusti.
Paikallinen varmuuskopiointi tehdään Resticillä USB-muistitikulle. USB-muistitikku liitetään esimerkiksi hakemistoon:
/mnt/usb
Tarkista, että USB-muistitikku on liitetty:
mount | grep /mnt/usb
df -h /mnt/usbTarkista Restic-repositorio:
restic -r /mnt/usb/restic-repo checkListaa varmuuskopiot:
restic -r /mnt/usb/restic-repo snapshotsAja paikallinen varmuuskopio manuaalisesti:
sudo /path/to/repository/raspberry-pi-5/backup-local.shOff-site-varmuuskopiointi synkronoi paikallisen salatun Restic-repositorion Hetzner Storage Boxiin rsyncillä SSH-yhteyden yli.
Aja off-site-synkronointi manuaalisesti:
sudo /path/to/repository/raspberry-pi-5/backup-offsite.shTarkista rsync-yhteys:
ssh <storagebox-user>@<storagebox-host>Tarkista ajastukset:
crontab -lSuositeltu ajoitus:
02:00 paikallinen Restic-varmuuskopio
03:30 off-site rsync-synkronointi
Näin paikallinen varmuuskopiointi ehtii valmistua ennen off-site-siirtoa.
Suositeltu säilytyskäytäntö:
7 päivittäistä kopiota
4 viikoittaista kopiota
Esimerkki Restic-komennosta:
restic -r /mnt/usb/restic-repo forget --keep-daily 7 --keep-weekly 4 --pruneListaa snapshotit:
restic -r /mnt/usb/restic-repo snapshotsPalauta yksittäinen snapshot väliaikaiseen hakemistoon:
mkdir -p /tmp/restore-test
restic -r /mnt/usb/restic-repo restore <snapshot-id> --target /tmp/restore-testTarkista palautettu sisältö:
ls -lah /tmp/restore-testÄlä palauta suoraan tuotantohakemistoon ennen kuin palautettu data on tarkistettu.
Yleinen palautusprosessi:
- Pysäytä kyseinen kontti.
- Ota nykyisestä tilanteesta hätäkopio.
- Palauta tarvittava data Restic-varmuuskopiosta väliaikaiseen hakemistoon.
- Korvaa vioittunut data palautetulla versiolla.
- Käynnistä kontti.
- Tarkista lokit ja käyttöliittymä.
Esimerkki:
cd /path/to/repository/docker
docker compose stop <palvelu>
mkdir -p /tmp/restore-test
restic -r /mnt/usb/restic-repo restore <snapshot-id> --target /tmp/restore-test
# Tarkista palautettu data ennen kopiointia tuotantoon.
ls -lah /tmp/restore-test
docker compose up -d <palvelu>
docker compose logs -f <palvelu>Koko ympäristön palautus tehdään näin:
- Asenna Ubuntu Server 24.04 LTS ARM64 uudelle Raspberry Pi 5 -laitteelle.
- Asenna Docker ja Docker Compose.
- Asenna Tailscale ja liitä laite Codebased Oy:n tailnetiin.
- Konfiguroi UFW sallimaan vain Tailscale-liikenne.
- Kloonaa tämä repositorio.
- Palauta Docker-volyymit tai
/var/lib/dockervarmuuskopiosta. - Tarkista tiedosto-oikeudet.
- Käynnistä Docker Compose -ympäristö.
- Tarkista GitLab, SonarQube, Vault ja NGINX.
- Testaa kirjautuminen ja CI/CD-putki.
- Tarkista varmuuskopioinnin ajastukset.
Käyttöjärjestelmä kovennetaan CIS Level 1 -periaatteiden mukaisesti. Kovennuksissa hyödynnetään Ansible Lockdown -roolia ja Ubuntu Security Guide -auditointia.
- root-kirjautuminen pois käytöstä
- SSH-salasanakirjautuminen pois käytöstä
- SSH MaxAuthTries -rajoitus
- automaattiset tietoturvapäivitykset
- auditd ja rsyslog käytössä
- tarpeettomien palveluiden poisto
- tiedosto-oikeuksien tiukentaminen
- UFW oletuksena
deny incoming - palvelut saatavilla vain Tailscale-verkon kautta
- julkisia portteja ei avata internetiin
sudo ufw status verboseOdotettu periaate:
Default: deny incoming
Default: allow outgoing
Incoming traffic allowed only through tailscale0
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|maxauthtries'Odotettu periaate:
permitrootlogin no
passwordauthentication no
maxauthtries 3
Aja CIS-auditointi:
sudo usg audit cis_level1_serverJos käytössä on räätälöity tailoring-tiedosto:
sudo usg audit --tailoring-file tailor.xmlAuditointiraportit tulee säilyttää dokumentaation mukana, jotta poikkeamat voidaan perustella myöhemmin.
Ympäristön resurssien valvontaan voidaan käyttää Netdataa.
Tarkista Netdatan tila:
systemctl status netdataNetdatan käyttöliittymään päästään vain sallitusta verkosta, esimerkiksi Tailscalen kautta:
http://<tailscale-ip>:19999
Seuraa erityisesti:
- CPU-käyttö
- RAM-käyttö
- levy-I/O
- levytilan käyttö
- konttien resurssinkäyttö
- verkon liikenne
- lämpötila
- UPS-tila
Tarkista Raspberry Pi 5:n lämpötila:
vcgencmd measure_tempJos vcgencmd ei ole käytettävissä Ubuntu Serverissä, lämpötila voidaan tarkistaa myös järjestelmän thermal zone -tiedoista:
cat /sys/class/thermal/thermal_zone0/tempArvo ilmoitetaan yleensä milliasteina. Esimerkiksi 52000 tarkoittaa noin 52 °C.
Ympäristö käyttää APC Back-UPS -laitetta suojaamaan palvelinta lyhyiltä sähkökatkoilta. NUT-palvelu huolehtii UPS-laitteen valvonnasta ja hallitusta alasajosta pidemmissä sähkökatkoissa.
Tarkista NUT-palveluiden tila:
systemctl status nut-server
systemctl status nut-monitorTarkista UPS-laitteen tila:
upsc <ups-nimi>Esimerkkejä seurattavista arvoista:
battery.charge
battery.runtime
ups.status
input.voltage
Tarkista lokit:
docker compose logs -f <palvelu>Tarkista, onko portti jo käytössä:
sudo ss -tulpnTarkista levytila:
df -h
docker system dfTarkista muisti:
free -hTarkista resurssinkäyttö:
docker statsTarkista GitLabin tila:
docker exec -it gitlab gitlab-rake gitlab:check SANITIZE=trueTarkista lokit:
docker compose logs -f gitlabTarkista GitLab Runnerin konfiguraatio:
docker exec -it gitlab_runner cat /etc/gitlab-runner/config.tomlTarkista, käyttääkö Runner sisäistä Docker-verkon osoitetta silloin, kun Tailscale-osoite ei toimi kontin sisältä.
Käynnistä Runner uudelleen:
docker compose restart gitlab_runnerTarkista SonarQuben vaatimat kernel-parametrit:
sysctl vm.max_map_count
sysctl fs.file-maxTarkista pysyvä konfiguraatio:
cat /etc/sysctl.d/99-sonarqube.confLataa sysctl-asetukset uudelleen:
sudo sysctl --systemTarkista SonarQuben ja PostgreSQL:n lokit:
docker compose logs -f sonarqube
docker compose logs -f postgresTarkista tila:
docker exec -it hvault vault statusAvaa Vault organisaation hyväksytyllä unseal-prosessilla.
Älä tallenna unseal-avaimia tähän repositorioon.
Tarkista NGINX-konfiguraatio:
docker exec -it nginx_lb nginx -tTarkista lokit:
docker compose logs -f nginx_lbTarkista sertifikaatit:
ls -lah /path/to/certsKäynnistä NGINX uudelleen:
docker compose restart nginx_lbTarkista Tailscale-tila:
tailscale statusTarkista IP:
tailscale ipTarkista UFW:
sudo ufw status verboseKäynnistä Tailscale uudelleen:
sudo systemctl restart tailscaledKirjaudu tarvittaessa uudelleen:
sudo tailscale up- Tarkista palveluiden saatavuus.
- Tarkista, että varmuuskopiointi on onnistunut.
- Tarkista kriittiset hälytykset tai poikkeavat lokit.
- Tarkista levytila, jos ympäristössä on tehty suuria muutoksia.
- Tarkista Docker-konttien tila.
- Tarkista Netdatan resurssikuvaajat.
- Tarkista Restic snapshotit.
- Tarkista off-site-varmuuskopioinnin onnistuminen.
- Tarkista UPS:n tila.
- Tarkista, ettei levytila ole kasvamassa hallitsemattomasti.
- Tarkista käyttöjärjestelmäpäivitykset.
- Tarkista Docker image -päivitykset.
- Tarkista GitLabin, SonarQuben ja Vaultin release notes -tiedot.
- Testaa yksittäisen tiedoston palautus varmuuskopiosta.
- Tarkista Tailscale ACL -säännöt.
- Poista tarpeettomat käyttäjät ja laitteet.
- Tarkista USG/CIS-poikkeamat tarvittaessa.
- Ota varmuuskopio.
- Tarkista, että off-site-kopio on ajan tasalla.
- Tee muutos ensin konfiguraatiotiedostoon.
- Commitoi muutos Git-repositorioon.
- Päivitä palvelu hallitusti.
- Tarkista lokit.
- Testaa käyttäjän näkökulmasta.
- Dokumentoi muutos.
- Älä avaa palveluita suoraan julkiseen internetiin.
- Älä commitoi salasanoja, avaimia, tokeneita tai
.env-tiedostoja. Huom!.env.exampletoimii mallina, varsinainen.envluodaan paikallisesti eikä sitä commitoida. - Älä käytä
latest-tageja tuotantopalveluissa. - Älä aja
docker volume prune-komentoa ilman varmistusta. - Älä muuta UFW-sääntöjä ilman, että Tailscale-pääsy säilyy.
- Älä tee GitLabin suuria versioloikkia ilman virallisen päivityspolun tarkistamista.
- Älä palauta varmuuskopiota suoraan tuotantoon ennen testipalautusta.
- Dokumentoi kaikki pysyvät muutokset repositorioon.
# Palvelimen perustila
uptime
df -h
free -h
hostnamectl
# Docker
docker compose ps
docker compose logs -f
docker stats
docker system df
# Tailscale
tailscale status
tailscale ip
# UFW
sudo ufw status verbose
# Restic
restic -r /mnt/usb/restic-repo snapshots
restic -r /mnt/usb/restic-repo check
# NUT / UPS
upsc <ups-nimi>
# Netdata
systemctl status netdata| Rooli | Vastuu |
|---|---|
| Codebased Oy | Ympäristön omistajuus ja jatkokäyttö |
| Pääkäyttäjä | Käyttäjähallinta, Tailscale ACL -säännöt ja operatiivinen ylläpito |
| Kehittäjät | Palveluiden käyttö ohjeiden mukaisesti |
| Opinnäytetyön tekijä | Alkuperäinen toteutus, dokumentointi ja luovutus |
Tämä repositorio sisältää Codebased Oy:lle toteutetun opinnäytetyön teknisen tuotoksen. Repositorion sisältö on tarkoitettu Codebased Oy:n sisäiseen käyttöön, ellei erikseen toisin sovita.
Kolmansien osapuolten ohjelmistoihin sovelletaan niiden omia lisenssiehtoja.
Tämä ympäristö osoittaa, että pienyrityksen ohjelmistokehityksen keskeisiä työkaluja voidaan ajaa kustannustehokkaasti ja tietoturvallisesti omassa ARM64-pohjaisessa reunalaskentaympäristössä. Raspberry Pi 5 ei korvaa suurta pilvi-instanssia raakasuorituskyvyssä, mutta se tarjoaa riittävän suorituskyvyn Codebased Oy:n nykyiseen käyttötapaukseen, kun ympäristö suunnitellaan, kovennetaan, dokumentoidaan ja varmuuskopioidaan huolellisesti.