Ga naar inhoud

Serverconfiguratie

Als u wijzigingen wilt aanbrengen in de Open Web Calendar om het aan uw wensen te laten voldoen, dan is dit mogelijk. U kunt kiezen uit

  • Wijzig hoe de standaardkalender er uitziet.
  • Wijzig hoe de server werkt.

Configureer de standaardkalender

De configuratie van alle kalenders stamt af van de [standaardspecificatie]. Alle waarden kunnen aangepast worden via een kopie van dit op het web gehoste bestand, via de kalender parameters specification_url. Elke parameter moet gedocumenteerd zijn in de default_specification.

Om alle kalenders die op je instantie worden gehost te wijzigen, gebruik je de omgevingsvariabele OWC_SPECIFICATION. Kalenders overschrijven nog steeds bepaalde waarden voor hun configuratie. Waarden die niet worden overschreven, worden beïnvloed door de standaardspecificatie. Niet alle waarden zijn beschikbaar op de configuratiepagina om te worden aangepast. Deze waarden kunnen nog steeds worden gewijzigd via de specification_url en de queryparameters.

U kunt overwegen om de volgende waarden aan te passen.

title

De titel van uw website.

language

Dit is de standaardtaal. U kunt deze aanpassen om de configuratiepagina aan te passen aan uw lokale gebruikers.

favicon

Dit is een link naar het website icoon.

source_code

Als u wijzigingen heeft aangebracht bent u wettelijk verplicht deze te tonen aan bezoekers. Wijzig de link of draag ze over aan het hoofdproject.

contributing

Als u wilt doorverwijzen om bij te dragen aan uw project.

privacy_policy

Indien u deze service zelf wilt hosten, kunt u de standaard privacy policy gebruiken.

Indien, om wat voor reden dan ook, u besluit om data te verzamelen in bijv. de HTTPS proxy of IP adressen gaat loggen, dan dient u uw eigen privacy policy te maken. U kunt linken naar degene van dit project.

Meer waarden

Er zijn veel meer waarden die gewijzigd kunnen worden. Bekijk hiervoor de default_specification. Deze waarden zijn allemaal gedocumenteerd. Gebruik de [OWS_SPECIFICATION] omgevingsvariabele om deze te wijzigen.

Bekijk ook:

De server configureren

Omgevingsvariabelen beïnvloeden alleen hoe de server functioneert. Deze omgevingsvariabelen kunnen gebruikt worden om de service te configureren:

ALLOWED_HOSTS

standaard leeg

De clients, gescheiden door een komma, die toegang hebben tot Open Web Calender. U ziet deze tekst indien u de toegang ontzegt is tot een dienst:

Forbidden: You don’t have the permission to access the requested resource. It is either read-protected or not readable by the server.*

Voorbeelden:

  • sta alleen toe vanaf dezelfde computer: ALLOWED_HOSTS=localhost
  • sta meerdere hosts toe: ALLOWED_HOSTS=192.168.0.1,192.168.2,api.myserver.com
  • Iedereen toegang tot de server toestaan (standaard): ALLOWED_HOSTS= or ALLOWED_HOSTS=*

Deze functionaliteit is aangeboden door flask-allowed-hosts.

APP_DEBUG

standaard false, waarden true of false, altijd false in de Docker container

Schakel de debug-modus voor de app in.

CACHE_DIRECTORY

de standaard is een tijdelijke directory (bijv. in /tmp/)

De Open Web Calendar cached bestanden die benodigd zijn om kalenders sneller te tonen in deze directory. Als deze directory niet bestaat, zal deze aangemaakt worden.

CACHE_FILE_SIZE

standaard 20 (MB)

Dit is de maximale grootte van een bestand in de cache. Wanneer de cache vol is zal het minst gebruikte bestand worden verwijderd.

Voorbeelden:

  • Sta alleen kleine bestanden van 4KB toe: CACHE_FILE_SIZE-0.004
  • Sta elke grootte toe: CACHE_FILE_SIZE="$CACHE_SIZE"
  • Caching uitschakelen: CACHE_FILE_SIZE=0

CACHE_SIZE

standaard 200 (MB)

Dit is de maximale cache-grootte in megabytes. Deze grootte is gelimiteerd tot 200MB om te voorkomen dat de cache het bestandssysteem /tmp/ of het werkgeheugen volledig gebruikt.

Voorbeelden:

  • Gebruik 1GB voor caching: CACHE_SIZE=1024
  • Ongelimiteerde cache: CACHE_SIZE=unlimited
  • Caching uitzetten: CACHE_SIZE=0

CACHE_REQUESTED_URLS_FOR_SECONDS

standaard 600 (seconden)

Seconden om de kalenderbestanden te cachen die worden gedownload om bandbreedte en vertraging te verminderen.

Voorbeelden:

  • Snel verversen: CACHE_REQUESTED_URLS_FOR_SECONDS=10
  • Caching uitzetten: CACHE_REQUESTED_URLS_FOR_SECONDS=0

OWC_ENCRYPTION_KEYS

standaard leeg

Dit is een komma-gescheiden lijst van coderingssleutels. Deze kunnen gebruikt worden om gevoelige informatie of URL’s te verbergen.

Voorbeelden:

  • Coderen uitzetten (standaard): OWC_ENCRYPTION_KEYS=
  • Gebruik een sleutel: OWC_ENCRYPTION_KEYS='Pj...48='
  • Gebruik meerdere sleutels: OWC_ENCRYPTION_KEYS='Pj...48=,cx...Fw=' Wanneer u meerdere sleutels gebruikt, wordt alleen de eerste sleutel gebruikt om data te coderen. De andere worden alleen gebruikt om de data te decoderen.

Nieuwe sleutels kunnen gegenereerd worden door uw installatie van Open Web Calendar te bezoeken op de pagina /new-key of door het volgende commando uit te voeren:

python3 -m open_web_calendar.new_key

Bekijk ook:

OWC_SPECIFICATION

OWC_SPECIFICATION is een optionele omgevingsvariabele.

  • Het kan een path zijn naar een bestand die geldige YAML of JSON bevat.
  • Het kan een string zijn die geldige YAML of JSON bevat.

Door OWC_SPECIFICATION te specificeren kunt uw standaardwaarden voor alle kalenders vervangen.

Notitie

Nieuwe versies van de Open Web Calendar kunnen nieuwe configuratie-parameters introduceren. Door uw aanpassingen in deze variabele te plaatsen in plaats van het wijzigen van het default_specification bestand, zorgt ervoor dat u niet Open Web Calendar breekt in een toekomstige versie.

In het volgende voorbeeld wordt de titel van alle kalenders vervangen, die niet hun eigen titel hebben.

OWC_SPECIFICATION='{"title": "calendar"}' gunicorn open_web_calendar:app

Bekijk ook:

PORT

standaard 5000, standaard 80 in the Docker container

De poort waar de service op draait.

Voorbeelden:

  • Beschikbaar stellen op HTTP poort: PORT=80

WORKERS

standaard 4, alleen voor de Docker container

Het aantal paralelle workers om aanvragen af te handelen.

Voorbeelden:

  • Gebruik maar een worker: WORKERS=1

Overige configuratie

De Open Web Calendar gebruikt bibliotheken wiens gedrag verder kan worden aangepast.

De Open Web Calendar is afhankelijk van proxy-servers voor deze features:

  • Toegangsbeheer en Gebruikers Om te beperken wie gebruik kan maken van Web Calendar, kunt u nginx of apache als een reverse proxy” gebruiken. YuNoHost is een andere self-hosting optie om toegang te beperken.
  • HTTPS Encryptie Dit kan gedaan worden door nginx, apache of caddy.
  • Meer geavanceerde caching Standaard caching wordt gedaan door Open Web Calendar. Voor meer geavanceerde cache-configuratie kan een proxy server zoals squid gebruikt worden. Bekijk hiervoor de documentatie hieronder over hoe de Open Web Calender alleen toegang te geven tot het web via een proxy.
  • Beperk toegang tot kalenders De standaar is dat Open Web Calendar geen beperkingen heeft voor wat betreft welke kalenders getoond worden. Gebruik de proxy-server om kalenders te filteren. Indien u Open Web Calendar draait achter een firewall met andere web-services is het opzetten van een proxy benodigd om te beschermen tegen SSRF attacks.

SSRF bescherming met een Proxy Server

De Open Web Calendar kan gebruikt worden om toegang te krijgen tot het lokale netwerk achter een firewall, zie Issue 250. Deze vrije toegang is bedoeld om kalenders van overal te tonen. Omdat de Open Web Calendar gebruikmaakt van requests, kan er een proxy worden gebruikt zoals beschreven in de documentatie van requests. De proxy kan vervolgens de filtering afhandelen.

export HTTP_PROXY="http://10.10.1.10:3128"
export HTTPS_PROXY="http://10.10.1.10:1080"
export ALL_PROXY="socks5://10.10.1.10:3434"

Bekijk ook:

Squid als een proxy server

De Squid proxy and cache is flexibel en configureerbaar. U kunt deze gebruiken voor de Open Web Calendar om toegang en aangepaste caching te configureren.

Besturingssysteem

Squid is beschikbaar voor alle grote platformen. Voor de commando’s en paden van deze instructie veronderstellen we dat u Squid gebruikt op Debian/Ubuntu. De commando’s kunnen werken op andere systemen, maar dit is niet getest.

Nadat u Squid proxy heef geïnstalleerd, dient u dit bestand toe te voegen aan de conf.d directory. Squid zal dit bestand vervolgens automatisch laden.

In Linux, maak /etc/squid/conf.d/open-web-calendar.conf aan:

## Example rule to deny access to your local networks.
## Adapt to list your (internal) IP networks from where browsing
## should be allowed
acl owc_forbidden dst 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl owc_forbidden dst 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl owc_forbidden dst 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl owc_forbidden dst 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl owc_forbidden dst 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl owc_forbidden dst 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl owc_forbidden dst fc00::/7               # RFC 4193 local private network range
acl owc_forbidden dst fe80::/10              # RFC 4291 link-local (directly plugged) machines

## If the Open Web Calendar runs on another machine, not localhost (127.0.0.1),
## fill in the network or IP of that machine here and allow access from it.
acl owc_host src 127.0.0.1           # Allow Access to Squid from localhost (default)
# acl owc_host src 172.16.0.0/12     # Uncomment if you run the Open Web Calendar as a docker service

## Access from owc_host is allowed to all but forbidden networks
http_access allow owc_host !owc_forbidden

## Use IPv4 for DNS
## See https://superuser.com/a/1443889
dns_v4_first on

De lijst hierboven ontzegt Open Web Calendar toegang tot alle bekende lokale/interne netwerken. Indien u uw eigen lokale netwerk (IPv4 of IPv6) heeft, voeg deze dan voor de zekerheid toe aan deze lijst.

Op Linux kunt u het bestand installeren met dit commando:

sudo wget -O /etc/squid/conf.d/open-web-calendar.conf https://raw.githubusercontent.com/niccokunzmann/open-web-calendar/master/docs/snippets/squid/open-web-calendar.conf

Herstart daarna de Squid proxy.

sudo service squid reload

Stel de omgevingsvariabelen in om Open Web Calendar te informeren dat Squid proxy, geïnstalleerd op localhost gebruikt moet worden. Instellen van deze variabele is afhankelijk van hoe u Open Web Calendar hebt geïnstalleerd.

Indien u gebruik maakt van Python Setup, kunt u de omgevingsvariabele voor de server op de volgende manier instellen:

export HTTP_PROXY="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
export ALL_PROXY="http://localhost:3128"
gunicorn open_web_calendar:app

Wanneer u toegang probeert te krijgen tot een verboden kalender met de lokale open-web-calendar, bijv. http://172.16.0.1, ziet u de volgende fout:

403 Client Error: Forbidden for url: http://172.16.0.1/calendar.ics