Table of Contents

Internal Resources

general information

below you find quick guides to the most essential technologies in our tech-stack. please add additional information, if you needed clarification in order to help the others

pyenv

this is a tool to manage multiple python versions on your machine by compiling python from source and installing it into a special folder in your home folder.

please follow the instructions on

https://github.com/pyenv/pyenv

to install it on your system

if you found a bug, please add here below:

echo 'export PATH=“$PYENV_ROOT/bin:$PATH”' » ~/.bashrc echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval “$(pyenv init -)“\nfi' » ~/.bashrc

sudo apt-get update sudo apt-get install build-essential zlib1g-dev libffi-dev libssl-dev libbz2-dev libreadline-dev libsqlite3-dev liblzma-dev sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

pipenv

this tool is used to setup isolated virtual environments per project, in order to avoid dependency hell and to create “reproducable” development environments across multiple developers.

it can be easily installed via `pip install pipenv`

Documentation: https://pipenv.pypa.io/en/latest/

we have considered alternatives like poetry, but since we have not run into any practical limitations of pipenv yet, we will not switch to another technology for now. introducing a different tool should be a team decision.

if you found a bug, please add here below:

docker

we use docker to deploy our software

installation guide: https://docs.docker.com/get-started/

it is useful to put your main user into the docker group

e.g. https://www.howtogeek.com/50787/add-a-user-to-a-group-or-second-group-on-linux/

we sometimes use it in conjunction with docker-compose, which can be installed via pip `pip install docker-compose`

documentation: https://docs.docker.com/compose/

VPN Setup

Wireguard

with wireguard (here are instructions for linux):

install the appropriate wireguard-tools: https://www.wireguard.com/install/

generate a private and public key: wg genkey | tee /tmp/privatekey | wg pubkey > /tmp/publickey

create a config file (e.g. corpex.conf):

[Interface]
Address = 10.8.0.2/32  # wait for response from corpex to get the correct IP
PrivateKey = <insert contents of /tmp/privatekey>

[Peer]
PublicKey = e/Iw+N58HD+BduudCwNCzkBLsMWVYIjTEuL3BtAOJBk=
AllowedIPs = 10.8.0.0/24, 10.4.30.0/24
Endpoint = 194.6.195.202:51820
PersistentKeepalive = 25

send contents of /tmp/pubkey to support@corpex.de

to: support@corpex.de
cc: dev@picalike.com
title: new wireguard client
body: Hello, here is my public key: <insert contents of /tmp/publickey>
      Cheers, <your name>

start the vpn device with: sudo wg-quick up <path-to-corpex.conf>

example output from wg when everything is working:

sudo wg
[sudo] password for bjoern:
interface: corpex
  public key: Oesue5HR4d2rA41xGAThcmiVCY+HXao9W/mdaQ7oYVY=
  private key: (hidden)
  listening port: 57902
peer: e/Iw+N58HD+BduudCwNCzkBLsMWVYIjTEuL3BtAOJBk=
  endpoint: 194.6.195.202:51820
  allowed ips: 10.8.0.0/24, 10.4.30.0/24
  latest handshake: 2 minutes ago
  transfer: 202.86 MiB received, 19.15 MiB sent
  persistent keepalive: every 25 seconds