CoreOS installeren op Proxmox

Download de ISO, maak een VM aan, en start op.

Genereer een wachtwoord-hash en sla op in cloud-config.yml, want dat is straks makkelijker met editten:

$ echo 'supersecret' | openssl passwd -stdin -1 > cloud-config.yml

Pas het bestand aan zodat het er ongeveer zo uit ziet:

cloud-config
 hostname: coreos
 coreos:  
   units:
     - name: static.network
       runtime: true
       content: |
         [Match]
         Name=ens18

         [Network]
         Address=192.168.20.11/24
         Gateway=192.168.20.1
         DNS=8.8.8.8
 users:
   - name: core
     passwd: $1$9dAhmWIT$v4wuO7t3r1tjg8gDZtkyi1
     groups:
       - sudo
       - docker 

Pas deze configuratie toe, want je hebt netwerk nodig:

$ sudo coreos-cloudinit -from-file cloud-config.yml

Installeer CoreOS op de virtuele hard-disk:

$ sudo coreos-install -d /dev/vda -c cloud-config.yml

Disk vervangen ZFS RAID-Z2

Oh jee, er is een disk stuk gegaan op mijn Proxmox server:

root@host2:~# zpool status
pool: rpool
state: DEGRADED
status: One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: resilvered 8.73G in 0h8m with 0 errors on Fri Apr 5 15:26:14 2019
config:
NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
sda3 UNAVAIL 0 0 0
sdb3 ONLINE 0 0 0
sdc3 ONLINE 0 0 0
sdd3 ONLINE 0 0 0
errors: No known data errors

Disk vervangen door een ‘nieuwe’. Partitietabel kopiëren van een andere disk:

root@host2:~# sgdisk --replicate=/dev/sda /dev/sdb
The operation has completed successfully.
root@host2:~# fdisk -l /dev/sda
Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 728ECA41-74BD-442B-A35A-1D71A5CD3F8D
Device Start End Sectors Size Type
/dev/sda1 34 2047 2014 1007K BIOS boot
/dev/sda2 2048 1050623 1048576 512M EFI System
/dev/sda3 1050624 3907029134 3905978511 1.8T Solaris /usr & Apple ZFS

ZFS vertellen dat ze partitie 3 van de nieuwe disk mag gaan gebruiken:

root@host2:~# zpool replace rpool /dev/sda3
Make sure to wait until resilver is done before rebooting.

Af en toe eens kijken hoe de vlag er bij hangt:

root@host2:~# zpool status
pool: rpool
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Mon Apr 8 07:50:19 2019
9.52G scanned out of 47.7G at 99.4M/s, 0h6m to go
1.67G resilvered, 19.93% done
config:
NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
replacing-0 DEGRADED 0 0 0
old UNAVAIL 0 0 0
sda3 ONLINE 0 0 0 (resilvering)
sdb3 ONLINE 0 0 0
sdc3 ONLINE 0 0 0
sdd3 ONLINE 0 0 0
errors: No known data errors

MySQL Replicatie inrichten

Zorg dat je twee sessies open hebt staan op de master. In de ene sessie blokkeer je schrijf-acties naar de database:

mysql> FLUSH TABLES WITH READ LOCK;

In de tweede sessie maak je een dump van je database:

# mysqldump -u username -p database > database.sql

In de eerste sessie haal je de master-gegevens op die je later nodig hebt:

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.019726 |      616 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

Schrijf-acties kunnen nu weer toegestaan worden:

mysql> UNLOCK TABLES;

Zorg dat de slave replicatie mag doen:

mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.example.com';

Kopieer nu de dump-file naar de nieuwe slave, en importeer deze:

# scp user@master:/home/user/database.sql .
# mysql -u username -p database < database.sql

Configureer de slave configuratie van MySQL:

mysql> CHANGE MASTER TO \
    MASTER_HOST='master', \
    MASTER_USER='username', \
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.019726',
    MASTER_LOG_POS=616;

Controleer de slave configuratie:

mysql> SHOW SLAVE STATUS;

 

Certificate Signing Request

Key file:

$ openssl genrsa -des3 -out key.withpass 2048
Generating RSA private key, 2048 bit long modulus
..............+++
.........+++
e is 65537 (0x10001)
Enter pass phrase for key.withpass:
Verifying - Enter pass phrase for key.withpass:

Passphrase verwijderen:

$ openssl rsa -in key.withpass -out key
Enter pass phrase for key:
writing RSA key
$ rm key.withpass

Request:

$ openssl req -new -key key -out csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: CC
State or Province Name (full name) [Some-State]: State
Locality Name (eg, city) []: City
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organization
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []: hostname.example.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Optioneel, self-signed certificate:

openssl x509 -req -days 365 -in csr -signkey key -out crt

PHP Sessies en paden

Wat een gedoe, twee of meer applicaties met eigen sessies onder dezelfde hostname. Dan moet je paden mee geven in de cookies. En wel vóór het starten van de sessie.

Maar omdat de sessie-cookie niet zomaar wordt bijgewerkt met iedere request moet na het starten van de sessie de lifetime nog worden bijgewerkt. ’t Is nu eenmaal niet anders. Oh, en het schijnt belangrijk te zijn om een sessie-naam te definiëren

Dus de enige juiste manier, volgens mij, om een sessie te (her)starten:

$name = 'myapp';
$timeout = 600;
$domain = preg_replace('/^[^\.]+/', '', $_SERVER['HTTP_HOST']);
$path = preg_replace('/[^\/]*$/', '', $_SERVER['REQUEST_URI']);
$https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && ($_SERVER['HTTPS'] != 'off');

session_name($name);
session_set_cookie_params($timeout, $path, $domain, $https, !$https);
session_start();
setcookie(session_name(), session_id(), time()+$timeout, $path, $domain, $https, !$https);

Of je gooit de hele sessie-afhandeling van PHP overboord, en bouwt zelf wat beters.

Thunderbird, Google en event invitations

Pffrt. Waarom moet dat nou zo moeilijk zijn? Kan de Google Calendar plugin mij niet gewoon voor alle agenda-uitnodigingen de optie geven om te accepteren?

Fixed mostly the same way, but did not delete anything
Used config editor and changed calendar.google.enableEmailInvitations “yes”
Restarted TB
Right clicked Google Calendar and selected properties
Under properties there was a new choice for e-mail and I selected the email address I wished to add invites from.
Worked great

bron