**This is an old revision of the document!**
Current Wiki Setup
Hosting
Currently using a free-tier AWS EC2 instance with the following parameters:
- Instance type: t2.micro
- vCPUs: 1
- RAM: 1024MiB
- Region: us-west-1
- OS: Ubuntu 18.04 LTS
- Storage: EBS 30GiB gp2 SSD
Protip: save the .pem
file into .ssh
and make an alias in .zshrc
to quickly connect to the EC2 instance, as such:
- snippet.bash
alias dokuconnect="ssh -i ~/.ssh/<your key>.pem <username>@<ec2 instance>.compute.amazonaws.com"
Domains
All hosted on Namecheap since it's cheaper than Route53.
- wiki.smirnov.nyc, set up A record to point here
- sergey.wiki, set up CNAME and A record
Software
NGINX
Stored the following config in sites-available
and symlinked in sites-enabled
:
- snippet.nginx
server { listen 80; listen [::]:80; server_name sergey.wiki wiki.smirnov.nyc; return 301 https://$server_name$request_uri; } server { listen [::]:443 ssl; listen 443 ssl; server_name sergey.wiki|wiki.smirnov.nyc; # Maximum file upload size is 4MB - change accordingly if needed client_max_body_size 4M; client_body_buffer_size 128k; root /var/www/dokuwiki; index doku.php; ssl_certificate /etc/letsencrypt/live/sergey.wiki/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/sergey.wiki/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot #Remember to comment the below out when you're installing, and uncomment it when done. location ~ /(conf/|bin/|inc/) { deny all; } #Support for X-Accel-Redirect location ~ ^/data/ { internal ; } location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ { expires 365d; } location / { try_files $uri $uri/ @dokuwiki; } location @dokuwiki { # rewrites "doku.php/" out of the URLs if you set the userwrite setting to .htaccess in dokuwiki config page rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/(.*) /doku.php?id=$1&$args last; } location ~ \.php$ { try_files $uri $uri/ /doku.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # fastcgi_pass unix:/var/run/php5-fpm.sock; #old php version } }
DokuWiki
Running 2018-04-22c “Greebo”, setup as standard.
TODO: List plugins here
S3 Backup
Initial setup
- Create S3 bucket with unique name
- Write down Access Key ID and Secret Access Key from your user page on AWS
- Install AWS CLI on the EC2 instance
- Install Python 3 and PIP3
- Run
aws configure
and enter in your keys and region
Python3 script
Install pip3 install boto3
, then modify the following file to your needs:
- snippet.python
import boto3 import botocore import datetime import os import re import tarfile WIKI_PATH = "/var/www/dokuwiki" BACKUP_PATH = "~/backups" AWS_ACCESS_KEY = "your_access_key_here" AWS_SECRET_KEY = "your_secret_key_here" BUCKET_NAME = "your-bucket-name-here" BUCKET_KEY_PREFIX = "dokuwiki/" TARGET_DIRS = ['conf', 'data/attic', 'data/media', 'data/meta', 'data/pages'] dirs = [WIKI_PATH + '/' + d for d in TARGET_DIRS] datestring = re.sub('[^0-9]', '', datetime.datetime.now().isoformat()) filename = '{}/wiki-{}.tar.gz'.format(BACKUP_PATH, datestring) with tarfile.open(os.path.expanduser(filename), 'w:gz') as tar: for dir in dirs: tar.add(dir, arcname=os.path.basename(dir)) s3 = boto3.resource('s3') bucket = s3.Bucket(BUCKET_NAME) try: s3.Object(BUCKET_NAME, BUCKET_KEY_PREFIX + os.path.basename(filename)).put(Body=open(os.path.expanduser(filename), 'rb')) except botocore.exceptions.ClientError as e: error_code = int(e.response['Error']['Code']) print(error_code)