Martin Koksrud Bekkelund

Martin Koksrud Bekkelund

Teknologi • Samfunn • Politikk

Jeg har noe gammelt utstyr i bruk, jeg skal innrømme det. Utstyr som ikke støtter SFTP for overføring av filer, kun ukryptert FTP. Men å slippe slikt utstyr ut på internett er uaktuelt, derfor har jeg flere interne FTP-servere kjørende på Raspberry Pi. Siden jeg har gjort dette oppsettet noen ganger, tenkte jeg det kunne være nyttig å dele kunnskapen om hvordan man installerer og setter opp en FTP-server på Raspberry Pi OS som er basert på Debian.

Det finnes selvfølgelig en lang rekke programvare som du kan bruke, spørsmålet er hvilken man skal velge for dette formålet. Av alternativene jeg vurderte tittet jeg på Pure-FTPd, vsftpd og ProFTPD. Av disse har jeg brukt Pure-FTPd gjentatte ganger. Den er enkel å sette opp og fungerer fint når bruksområdet er begrenset. Ellers er vsftpd et godt valg hvis ytelse og skalering er viktig, eller ProFTPD hvis mange funksjoner og fleksibilitet er viktig.

Installasjon

Åpne et terminalvindu, et shell, og start ved å skrive:

sudo apt-get install pure-ftpd

Konfigurasjon

Først oppretter vi en gruppe som én eller flere FTP-brukere skal tilhøre.

sudo groupadd ftpgroup

Så legger vi til en bruker i gruppen, der -g ftpgroup angir gruppen, -s /sbin/nologin angir hvilket shell brukeren får tilgang til, som i dette tilfellet sier at bruker ikke skal ha shell-tilgang, og -d /dev/null som angir at brukeren ikke skal ha opprettet en personlig mappe. Ønsker du å forstå mulighetene i kommandoen useradd kan du lese manualen.

sudo useradd ftpuser -g ftpgroup -s /sbin/nologin -d /dev/null

Så skal vi ha en mappe der man kan lese og skrive filer via FTP. Kommandoen under forutsetter at din bruker på Raspberry Pi heter pi.

sudo mkdir /home/pi/FTP

Dernest skal brukeren ftpbruker i gruppen ftpgroup ha tilgang til mappen /home/pi/FTP.

sudo chown -R ftpuser:ftpgroup /home/pi/FTP

Nå skal vi opprette en virtuell bruker kalt upload og koble denne til ftpuser og ftpgroup, sette standardmappen til /home/pi/FTP og lagre passordet i brukerdatabasen.

sudo pure-pw useradd upload -u ftpuser -g ftpgroup -d /home/pi/FTP -m

Du blir nå bedt om å opprette et passord til brukeren upload.

Så skal brukerdatabasen opprettes.

sudo pure-pw mkdb

Så skal vi angi at autentiseringsmetoden skal være internt for FTP fremfor den innebygde i Linux.

sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/60puredb

Når oppsett er ferdig restarter vi FTP-serveren.

sudo service pure-ftpd restart

Så kan du angi at FTP-serveren alltid skal kjøre etter omstart.

sudo systemctl enable pure-ftpd

Nå kan du teste tilkobling med en FTP-klient med brukernavnet upload og passordet du oppga. Tilkoblingen skal være FTP på port 21 og ikke SFTP.

Hva nå?

Herfra og videre finnes det en lang rekke innstillinger som kan gjøres basert på dine behov. Kanskje skal (og bør) du sikre serveren til SFTP. Les manualen og gjør nødvendig oppsett.

Som leser kan du gi et bidrag til produksjonen, til driften og til å skaffe utstyr til testing for å sikre regelmessige, uavhengige artikler, tester og vurderinger av høy kvalitet.

Gi et bidrag

Husk å abonnere på nyhetsbrevet, det er gratis og du får alle artikler rett i innboksen.

 

Utgangspunktet for denne artikkelen startet ganske enkelt: Jeg har en Homey hjemme og jeg har en Homey på hytta. Er det mulig å få dem til å snakke med hverandre? Svaret er selvfølgelig ja, og webhooks er løsningen. I denne artikkelen viser jeg hva som er mulig og hvordan du går frem.

Hva er Homey?

Som fast leser har du fått med deg mine artikler om Homey. Selvfølgelig har du det. Homey er en smarthussentral, altså en spesialisert datamaskin du kan bruke til å styre alt fra lys og varme i hjemmet, til sikkerhet og automatisering av kjedelige oppgaver. Homey har vært en av de mer populære smarthussentralene de siste årene. Jeg skrev en lengre artikkel om Homey i 2019. Siden artikkelen ble skrevet har det kommet en oppdatert utgave av Homey som støtter flere standarder, har mer minne og kraftigere prosessor.

Hva er webhooks?

Webhooks er, litt forenklet, en mulighet for å dytte en automatisert melding fra et sted til et annet i sanntid. Det vil si at når noe skjer på Homey hjemme, så kan jeg sende en automatisert melding til Homey på hytta, eller omvendt.

Uten å gjøre dette alt for teknisk, kan vi litt upresist si at en slik melding kan være en hendelse alene, en såkalt «event», eller den kan også ha med et innhold, en såkalt «payload».

Hva kan vi bruke webhooks til?

Hvis vi går tilbake til eksempelet med å kunne kommunisere mellom Homey hjemme og Homey på hytta, kan vi tenke oss at når vi reiser hjemmefra og setter huset i sparemodus, kan vi samtidig sende en hendelse til Homey på hytta, som så skrur hytta på.

La meg ta et eksempel med en payload. På hytta har jeg en flow som hver time regner ut strømprisen inkludert nettleie. Den ble opprinnelig laget da strømprisene var ekstremt mye høyere enn de er nå, men som et eksempel fungerer det bra. Hver time oversender jeg bruttoprisen fra hytta og hjem med en webhook. Deretter lagrer jeg prisen i en database, slik at jeg har historikk og kan gjøre artige spørringer og sammenstille innsikt over tid.

Slik setter du opp webhooks i Homey

For å få webhooks til å fungere trenger du først en flow med en navngitt webhook på den Homey som skal motta en hendelse. La oss kalle denne webhook-en for test-for-mottak-av-webhook. Du oppretter en ny flow i Homey som skal motta hendelsen og velger Når og dernest Logikk og så Hendelse har blitt mottatt. Her skriver du inn test-for-mottak-av-webhook. Nå trykker du og velger hva du ønsker skal skje når en hendelse mottas. Hva med en push-melding til deg selv?

Eksempel på mottak av webhook

Så langt, så fint. Nå trenger avsender-Homey å vite adressen til mottaker-Homey. Hver Homey har en unik adresse, en URL, som du skal bruke for å sende meldingen. Adressen vil se ut som https://webhook.homey.app/01234567890abc/.

For å finne denne adressen må du logge inn i Homey Developer Tools, hvor du finner alle detaljer om dine Homeys. Husk å velge riktig Homey, både når du lager flows og i Homey Developer Tools, slik at du får alt riktig.

Trykk på System og se etter cloudId. Denne skal du kopiere og erstatte 01234567890abc i adressen over. Hvis adressen til mottaker-Homey er https://webhook.homey.app/01234567890abc/ så er den fulle adressen til eksempelet https://webhook.homey.app/01234567890abc/test-for-mottak-av-webhook.

Nå trenger du en flow på den Homey som skal sende hendelsen, og denne flow-en skal kalle test-for-mottak-av-webhook hos mottaker. Husk å bytte Homey, og så lager du en ny flow. Velg hva som skal starte denne flow-en, for eksempel bare manuell start med Start. Trykk , velg Logikk og Gjør en HTTP Metode-forespørsel til URL med overskrifter Overskrift og brødtekst Brødtekst. I dette kortet velger du først metode Get og dernest limer du inn https://webhook.homey.app/01234567890abc/test-for-mottak-av-webhook i URL.

Eksempel for å sende webhook

Hvis alt er gjort riktig, så skal du kunne starte flow-en manuelt, og som ved trolldom vil du motta et push-varsel på telefonen fra mottaker-Homey.

Så var det dette med payload da. I flow-en som sender en hendelse putter du inn ?tag= bak URL-en, og dernest kan du trykke på den lille etiketten og velge hvilken tag du vil sende med hendelsen.

Eksempel på å sende webhook med payload

I flow-en som mottar hendelsen vil du nå få tilgjengelig Tag som kan inneholde en verdi som du kan benytte videre, enten du vil dytte det inn i en variabel eller, som meg, rett i en database.

Eksempel på mottak av webhook med payload

Som leser kan du gi et bidrag til produksjonen, til driften og til å skaffe utstyr til testing for å sikre regelmessige, uavhengige artikler, tester og vurderinger av høy kvalitet.

Gi et bidrag

Husk å abonnere på nyhetsbrevet, det er gratis og du får alle artikler rett i innboksen.

 

For snart et år siden startet jeg å logge strømpriser eks. strømstøtte til en database. Mer enn 8000 oppføringer senere kan jeg se at gjennomsnittlig strømpris siste år har vært 1,56 kr/kWt, laveste har vært -0,0054 kr/kWt den 21. mai i år, høyeste har vært 8,84 kr/kWt 13. desember i fjor.

Nå som strømstøtten endres til å beregnes time for time, og ikke bare etter gjennomsnittet når måneden er omme, blir det langt enklere å beregne reell strømpris og gjøre mer treffende tiltak i smarthuset. Det blir heldigvis ikke lenger mulig med de bisarre utslagene med negativ strømpris, med mindre strømpris pluss nettleie og avgifter faktisk blir mindre enn 0,- kroner. Jeg tror ikke det skjer. Jeg tror videre at den såkalte strømkrisen kan avblåses, ettersom strømstøtten vil ta hånd om toppene. Usikkerheten ligger hos dem med hytte.

Prisene henter jeg time for time fra Tibber. Nå som strømstøtten endres har jeg forsøkt å få klarhet i om Tibber vil tilby en ferdig utregnet pris etter strømstøtte, ettersom det nå er mulig å beregne time for time, men jeg har ikke fått et tydelig svar på dette. Dersom det ikke skulle skje, så ser logikken for utregning ut som følger:

Beregning av strømpris september 2023

Vi sjekker først om strømprisen er over 0,70 kr/kWt + mva, som er innslagspunktet for strømstøtten, altså 0,875 kr/kWt. Er den under så tar vi kun nettleie pluss strømpris. Er den over regner vi ut hva som er overskytende over 0,875 kr/kWt, beregner 10 % av dette som er egenandelen, og legger til slutt til nettleien.

Som leser kan du gi et bidrag til produksjonen, til driften og til å skaffe utstyr til testing for å sikre regelmessige, uavhengige artikler, tester og vurderinger av høy kvalitet.

Gi et bidrag

Husk å abonnere på nyhetsbrevet, det er gratis og du får alle artikler rett i innboksen.

 

Flere artikler

Enda flere artikler? Besøk arkivet.

Om Martin

Martin Koksrud Bekkelund

Dette er Martin Koksrud Bekkelund sitt private nettsted, hvor han skriver om forbrukerteknologi, teknologiledelse og hvordan teknologi, samfunn og politikk påvirker hverandre. Martin er innehaver av konsulentselskapet Nivlheim. Les mer...

 

Mastodon Facebook LinkedIn Thingiverse GitHub Ko-Fi PayPal

© 1995-2024 Martin Koksrud Bekkelund
OpphavsrettRSS og abonnementKontaktPersonvern og informasjonskapsler