First run
apk update
as root to update the list of available packages. After that, install pkg-config
using
apk add pkgconfig
First run
apk update
as root to update the list of available packages. After that, install pkg-config
using
apk add pkgconfig
Run
apk update
as root to update the list of available packages. Then, run
apk add cmake
to install CMake.
Just run this sequence of commands to install tailscale. This will automatically determine the correct Ubuntu version
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/$(lsb_release -sc).gpg | sudo apt-key add - curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/$(lsb_release -sc).list | sudo tee /etc/apt/sources.list.d/tailscale.list sudo apt-get update sudo apt-get install tailscale
This headscale setup is using sqlite
– with a much lighter memory & CPU footprint than PostgreSQL for simple usecases, I recommend this for almost any installation: Headscale doesn’t have to manage that many requests and using sqlite3 is fine for all but the most demanding setups.
First, create the directory where headscale and all the data will reside in (we use /opt/headscale
in this example).
sudo mkdir -p /opt/headscale
Now run the following script in /opt/headscale
to initialize the files and directories headscale requires:
mkdir -p ./config touch ./config/db.sqlite curl https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml -o ./config/config.yaml
Note: We have an alternate docker-compose
config for use with Traefik as an reverse proxy, see Headscale docker-compose config for Traefik HTTPS reverse proxy
Now it’s time to create /opt/headscale/docker-compose.yml
:
version: '3.5' services: headscale: image: headscale/headscale:latest volumes: - ./config:/etc/headscale/ - ./data:/var/lib/headscale ports: - 27896:8080 command: headscale serve restart: unless-stopped
This will configure headscale to run its HTTP server on port 27896
. You can reverse proxy this port to the domain of your choice.
Now we should edit the server name in config/config.yaml
:
server_url: https://headscale.mydomain.com
Note that you need to restart tailscale after each
Next, see How to create namespace on headscale server for details on how you can create a namespace. Once you have created a namespace (comparable to an account on the commercial tailscale service), you can continue connecting clients (the client software is called tailscale), see e.g. How to connect tailscale to headscale server on Linux
Using the method described in our previous post Create a systemd service for your docker-compose project in 10 seconds we will now setup autostart on boot for headscale using systemd
. This command will also start it immediately:
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin
Use this command to view & follow the logs:
docker-compose logs -f
Example output
headscale_1 | [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached. headscale_1 | headscale_1 | [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. headscale_1 | - using env: export GIN_MODE=release headscale_1 | - using code: gin.SetMode(gin.ReleaseMode) headscale_1 | headscale_1 | [GIN-debug] GET /metrics --> github.com/zsais/go-gin-prometheus.prometheusHandler.func1 (4 handlers) headscale_1 | [GIN-debug] GET /health --> github.com/juanfont/headscale.(*Headscale).Serve.func2 (4 handlers) headscale_1 | [GIN-debug] GET /key --> github.com/juanfont/headscale.(*Headscale).KeyHandler-fm (4 handlers) headscale_1 | [GIN-debug] GET /register --> github.com/juanfont/headscale.(*Headscale).RegisterWebAPI-fm (4 handlers) headscale_1 | [GIN-debug] POST /machine/:id/map --> github.com/juanfont/headscale.(*Headscale).PollNetMapHandler-fm (4 handlers) headscale_1 | [GIN-debug] POST /machine/:id --> github.com/juanfont/headscale.(*Headscale).RegistrationHandler-fm (4 handlers) headscale_1 | [GIN-debug] GET /oidc/register/:mkey --> github.com/juanfont/headscale.(*Headscale).RegisterOIDC-fm (4 handlers) headscale_1 | [GIN-debug] GET /oidc/callback --> github.com/juanfont/headscale.(*Headscale).OIDCCallback-fm (4 handlers) headscale_1 | [GIN-debug] GET /apple --> github.com/juanfont/headscale.(*Headscale).AppleMobileConfig-fm (4 handlers) headscale_1 | [GIN-debug] GET /apple/:platform --> github.com/juanfont/headscale.(*Headscale).ApplePlatformConfig-fm (4 handlers) headscale_1 | [GIN-debug] GET /swagger --> github.com/juanfont/headscale.SwaggerUI (4 handlers) headscale_1 | [GIN-debug] GET /swagger/v1/openapiv2.json --> github.com/juanfont/headscale.SwaggerAPIv1 (4 handlers) headscale_1 | [GIN-debug] GET /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] POST /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] PUT /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] PATCH /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] HEAD /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] OPTIONS /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] DELETE /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] CONNECT /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | [GIN-debug] TRACE /api/v1/*any --> github.com/gin-gonic/gin.WrapF.func1 (5 handlers) headscale_1 | 2022-01-16T19:04:04Z WRN Listening without TLS but ServerURL does not start with http:// headscale_1 | 2022-01-16T19:04:04Z INF listening and serving (multiplexed HTTP and gRPC) on: 0.0.0.0:8080 headscale_1 | 2022-01-16T19:04:04Z INF Setting up a DERPMap update worker frequency=86400000
The following example builds on our config from Simple Traefik docker-compose setup with Lets Encrypt Cloudflare DNS-01 & TLS-ALPN-01 & HTTP-01 challenges
This config (placed in /etc/traefik/conf/myservice.toml
– which is mapped to ./conf/myservice.toml
i.e. /opt/traefik/conf/myservice.toml
in our docker-compose example) generates a wildcard certificate for *.mydomain.com
(also including just mydomain.com
) using the cloudflare
certificate provider and uses said wildcard certificate for myservice.mydomain.com
and any other *.mydomain.com
backends you have configured.
This config will reverse proxy all traffic on myservice.mydomain.com
to 192.168.178.233:8080
# Host [http.routers.myservice] rule = "Host(`myservice.mydomain.com`)" service = "myservice" # Backend [http.services] [http.services.myservice.loadBalancer] [[http.services.myservice.loadBalancer.servers]] url = "http://192.168.178.233:8080/" # Certificates [http.routers.myservice.tls] certresolver = "cloudflare" [[http.routers.myservice.tls.domains]] main = "mydomain.com" sans = ["*.mydomain.com"]
Note that cloudflare
in certresolver = "cloudflare"
refers to the provider configured using
--certificatesresolvers.cloudflare....
but you can choose any other name with the cloudflare
method such as --certificatesresolvers.myprovider.acme.dnschallenge.provider=cloudflare
in which case the provider will be referred to as myprovider
!
This is my setup using docker-compose
to start Traefik, supporting all major encryption providers. I recommend to create the /opt/traefik
directory and save the following file as /opt/traefik/docker-compose.yml
. This config has the file
and docker
providers enabled by default.
version: "3.4" services: traefik: image: "traefik:v2.8" network_mode: "host" command: - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--providers.file.directory=/etc/traefik/conf" - "--providers.file.watch=true" - "--entrypoints.web.address=:80" - "--entryPoints.web.http.redirections.entryPoint.to=websecure" - "--entryPoints.web.http.redirections.entryPoint.scheme=https" - "--entrypoints.websecure.address=:443" - "--log.level=info" - "--serversTransport.insecureSkipVerify=true" # - "--certificatesresolvers.cloudflare.acme.dnschallenge=true" - "--certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare" - "--certificatesresolvers.cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,1.0.0.1:53" - "--certificatesresolvers.cloudflare.acme.caserver=https://acme-v02.api.letsencrypt.org/directory" - "--certificatesresolvers.cloudflare.acme.email=letsencrypt@mydomain.com" - "--certificatesresolvers.cloudflare.acme.KeyType=EC256" - "--certificatesresolvers.cloudflare.acme.storage=/letsencrypt/acme.json" # - "--certificatesresolvers.cloudflare-staging.acme.dnschallenge=true" - "--certificatesresolvers.cloudflare-staging.acme.dnschallenge.provider=cloudflare" - "--certificatesresolvers.cloudflare-staging.acme.dnschallenge.resolvers=1.1.1.1:53,1.0.0.1:53" - "--certificatesresolvers.cloudflare-staging.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" - "--certificatesresolvers.cloudflare-staging.acme.email=letsencrypt@mydomain.com" - "--certificatesresolvers.cloudflare-staging.acme.KeyType=EC256" - "--certificatesresolvers.cloudflare-staging.acme.storage=/letsencrypt/acme.json" # - "--certificatesresolvers.alpn.acme.tlsChallenge=true" - "--certificatesresolvers.alpn.acme.caserver=https://acme-v02.api.letsencrypt.org/directory" - "[email protected]" - "--certificatesresolvers.alpn.acme.KeyType=EC256" - "--certificatesresolvers.alpn.acme.storage=/letsencrypt/acme.json" # - "--certificatesresolvers.alpn-staging.acme.tlsChallenge=true" - "--certificatesresolvers.alpn-staging.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" - "--certificatesresolvers.alpn-staging.acme.email=letsencrypt@mydomain.com" - "--certificatesresolvers.alpn-staging.acme.KeyType=EC256" - "--certificatesresolvers.alpn-staging.acme.storage=/letsencrypt/acme.json" environment: - [email protected] - CLOUDFLARE_API_KEY=XYZABC123 volumes: - "./letsencrypt:/letsencrypt" - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./conf:/etc/traefik/conf:ro"
Replace [email protected]
by the Email address to register certificates to. Also ensure to change
- [email protected] - CLOUDFLARE_API_KEY=XYZABC123
Optionally, create a Pilot token and set it (don’t forget to un-comment the line) using
# - "--pilot.token=PILOT_TOKEN_HERE"
Now let’s make the service autostart on boot (and start it right now) using the method detailed in docker-compose systemd .service generator: Run the following in /opt/traefik
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin
We will detail how to get access to the Traefik API in followup posts.
Also see: Oracle Cloud Always Free Tier ARM network speedtest
We tested Oracle Cloud free tier network performance on 2022-01-16 using:
AD2
. In some less systematic tests using speedtest
, AD2
performed significantly better in our speed testsubuntu@instance-20220116-0316:~$ ping 1.1.1.1 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 64 bytes from 1.1.1.1: icmp_seq=1 ttl=62 time=0.920 ms 64 bytes from 1.1.1.1: icmp_seq=2 ttl=62 time=1.03 ms 64 bytes from 1.1.1.1: icmp_seq=3 ttl=62 time=0.901 ms 64 bytes from 1.1.1.1: icmp_seq=4 ttl=62 time=1.00 ms 64 bytes from 1.1.1.1: icmp_seq=5 ttl=62 time=1.00 ms
ubuntu@instance-20220116-0316:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=122 time=0.826 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=122 time=0.829 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=122 time=0.801 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=122 time=0.996 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=122 time=0.842 ms 64 bytes from 8.8.8.8: icmp_seq=6 ttl=122 time=0.840 ms
ubuntu@instance-20220116-0316:~$ traceroute 1.1.1.1 traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets 1 140.91.198.100 (140.91.198.100) 0.230 ms 0.175 ms 140.91.198.158 (140.91.198.158) 0.099 ms 2 oracle-svc071177-lag003320.ip.twelve99-cust.net (213.248.69.249) 16.004 ms 50.135 ms 50.095 ms 3 ffm-b11-link.ip.twelve99.net (213.248.69.248) 1.045 ms 1.132 ms 0.862 ms 4 cloudflare-ic328337-ffm-b11.ip.twelve99-cust.net (62.115.144.199) 1.142 ms 7.372 ms 1.690 ms 5 one.one.one.one (1.1.1.1) 0.733 ms 0.746 ms 0.724 ms
ubuntu@instance-20220116-0316:~$ traceroute 8.8.8.8 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets 1 140.91.198.103 (140.91.198.103) 0.268 ms 140.91.198.98 (140.91.198.98) 0.224 ms 140.91.198.103 (140.91.198.103) 0.214 ms 2 ipv4.de-cix.fra.de.as31898.oracle.com (80.81.196.168) 0.412 ms 1.479 ms 185.1.102.135 (185.1.102.135) 0.574 ms 3 ipv4.de-cix.fra.de.as15169.google.com (80.81.193.108) 0.714 ms 185.1.102.59 (185.1.102.59) 1.172 ms 1.132 ms 4 108.170.251.129 (108.170.251.129) 0.688 ms 108.170.251.193 (108.170.251.193) 1.110 ms 108.170.251.129 (108.170.251.129) 0.705 ms 5 142.251.64.183 (142.251.64.183) 0.812 ms 142.250.62.151 (142.250.62.151) 1.061 ms 142.250.214.201 (142.250.214.201) 0.708 ms 6 dns.google (8.8.8.8) 0.918 ms 0.885 ms 0.716 ms
Also see: Oracle Cloud Always Free Tier ARM network ping
We tested Oracle Cloud free tier network performance on 2022-01-16 using:
AD2
. In some less systematic tests using speedtest
, AD2
performed significantly better (900Mbps AD2
instead of around 600Mbps AD1
&AD3
).Quick links:
ubuntu@instance-20220116-0316:~$ speedtest Retrieving speedtest.net configuration... Testing from Oracle Corporation (141.144.237.76)... Retrieving speedtest.net server list... Selecting best server based on ping... Hosted by teliko GmbH (Limburg) [50.94 km]: 2.456 ms Testing download speed................................................................................ Download: 901.05 Mbit/s Testing upload speed...................................................................................................... Upload: 918.25 Mbit/s
ubuntu@instance-20220116-0316:~$ iperf3 -c speedtest.wtnet.de -p 5200 -P 10 -4 Connecting to host speedtest.wtnet.de, port 5200 [ 5] local 10.0.0.130 port 45868 connected to 213.209.106.95 port 5200 [ 7] local 10.0.0.130 port 45870 connected to 213.209.106.95 port 5200 [ 9] local 10.0.0.130 port 45872 connected to 213.209.106.95 port 5200 [ 11] local 10.0.0.130 port 45874 connected to 213.209.106.95 port 5200 [ 13] local 10.0.0.130 port 45876 connected to 213.209.106.95 port 5200 [ 15] local 10.0.0.130 port 45878 connected to 213.209.106.95 port 5200 [ 17] local 10.0.0.130 port 45880 connected to 213.209.106.95 port 5200 [ 19] local 10.0.0.130 port 45882 connected to 213.209.106.95 port 5200 [ 21] local 10.0.0.130 port 45884 connected to 213.209.106.95 port 5200 [ 23] local 10.0.0.130 port 45886 connected to 213.209.106.95 port 5200 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 21.6 MBytes 181 Mbits/sec 1434 208 KBytes [ 7] 0.00-1.00 sec 25.6 MBytes 214 Mbits/sec 2056 69.3 KBytes [ 9] 0.00-1.00 sec 32.3 MBytes 271 Mbits/sec 2737 230 KBytes [ 11] 0.00-1.00 sec 13.1 MBytes 110 Mbits/sec 447 18.4 KBytes [ 13] 0.00-1.00 sec 24.4 MBytes 205 Mbits/sec 2349 65.0 KBytes [ 15] 0.00-1.00 sec 18.1 MBytes 152 Mbits/sec 1428 43.8 KBytes [ 17] 0.00-1.00 sec 17.3 MBytes 145 Mbits/sec 1146 77.8 KBytes [ 19] 0.00-1.00 sec 16.3 MBytes 136 Mbits/sec 1022 77.8 KBytes [ 21] 0.00-1.00 sec 18.1 MBytes 152 Mbits/sec 1260 79.2 KBytes [ 23] 0.00-1.00 sec 16.7 MBytes 140 Mbits/sec 1353 50.9 KBytes [SUM] 0.00-1.00 sec 203 MBytes 1.71 Gbits/sec 15232 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 1.00-2.00 sec 21.2 MBytes 178 Mbits/sec 15 123 KBytes [ 7] 1.00-2.00 sec 7.50 MBytes 62.9 Mbits/sec 30 38.2 KBytes [ 9] 1.00-2.00 sec 18.8 MBytes 157 Mbits/sec 47 150 KBytes [ 11] 1.00-2.00 sec 6.25 MBytes 52.4 Mbits/sec 584 83.4 KBytes [ 13] 1.00-2.00 sec 8.75 MBytes 73.4 Mbits/sec 78 80.6 KBytes [ 15] 1.00-2.00 sec 11.2 MBytes 94.4 Mbits/sec 45 59.4 KBytes [ 17] 1.00-2.00 sec 10.0 MBytes 83.9 Mbits/sec 73 93.3 KBytes [ 19] 1.00-2.00 sec 8.75 MBytes 73.4 Mbits/sec 40 73.5 KBytes [ 21] 1.00-2.00 sec 15.0 MBytes 126 Mbits/sec 16 140 KBytes [ 23] 1.00-2.00 sec 8.75 MBytes 73.4 Mbits/sec 19 76.4 KBytes [SUM] 1.00-2.00 sec 116 MBytes 975 Mbits/sec 947 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 2.00-3.00 sec 13.8 MBytes 115 Mbits/sec 37 99.0 KBytes [ 7] 2.00-3.00 sec 8.75 MBytes 73.4 Mbits/sec 23 73.5 KBytes [ 9] 2.00-3.00 sec 11.2 MBytes 94.4 Mbits/sec 28 74.9 KBytes [ 11] 2.00-3.00 sec 10.0 MBytes 83.9 Mbits/sec 44 65.0 KBytes [ 13] 2.00-3.00 sec 10.0 MBytes 83.9 Mbits/sec 53 65.0 KBytes [ 15] 2.00-3.00 sec 11.2 MBytes 94.4 Mbits/sec 21 90.5 KBytes [ 17] 2.00-3.00 sec 12.5 MBytes 105 Mbits/sec 24 79.2 KBytes [ 19] 2.00-3.00 sec 10.0 MBytes 83.9 Mbits/sec 30 84.8 KBytes [ 21] 2.00-3.00 sec 16.2 MBytes 136 Mbits/sec 55 105 KBytes [ 23] 2.00-3.00 sec 8.75 MBytes 73.4 Mbits/sec 26 69.3 KBytes [SUM] 2.00-3.00 sec 112 MBytes 944 Mbits/sec 341 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 3.00-4.00 sec 12.5 MBytes 105 Mbits/sec 44 84.8 KBytes [ 7] 3.00-4.00 sec 11.2 MBytes 94.4 Mbits/sec 25 76.4 KBytes [ 9] 3.00-4.00 sec 12.5 MBytes 105 Mbits/sec 34 99.0 KBytes [ 11] 3.00-4.00 sec 10.0 MBytes 83.9 Mbits/sec 21 73.5 KBytes [ 13] 3.00-4.00 sec 10.0 MBytes 83.9 Mbits/sec 62 70.7 KBytes [ 15] 3.00-4.00 sec 13.8 MBytes 115 Mbits/sec 84 117 KBytes [ 17] 3.00-4.00 sec 13.8 MBytes 115 Mbits/sec 22 105 KBytes [ 19] 3.00-4.00 sec 11.2 MBytes 94.4 Mbits/sec 20 110 KBytes [ 21] 3.00-4.00 sec 12.5 MBytes 105 Mbits/sec 26 70.7 KBytes [ 23] 3.00-4.00 sec 10.0 MBytes 83.9 Mbits/sec 46 73.5 KBytes [SUM] 3.00-4.00 sec 118 MBytes 986 Mbits/sec 384 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 4.00-5.00 sec 13.8 MBytes 115 Mbits/sec 10 105 KBytes [ 7] 4.00-5.00 sec 11.2 MBytes 94.4 Mbits/sec 43 113 KBytes [ 9] 4.00-5.00 sec 12.5 MBytes 105 Mbits/sec 34 63.6 KBytes [ 11] 4.00-5.00 sec 13.8 MBytes 115 Mbits/sec 34 96.2 KBytes [ 13] 4.00-5.00 sec 8.75 MBytes 73.4 Mbits/sec 58 69.3 KBytes [ 15] 4.00-5.00 sec 8.75 MBytes 73.4 Mbits/sec 61 45.2 KBytes [ 17] 4.00-5.00 sec 11.2 MBytes 94.4 Mbits/sec 30 67.9 KBytes [ 19] 4.00-5.00 sec 11.2 MBytes 94.4 Mbits/sec 73 74.9 KBytes [ 21] 4.00-5.00 sec 8.75 MBytes 73.4 Mbits/sec 25 63.6 KBytes [ 23] 4.00-5.00 sec 15.0 MBytes 126 Mbits/sec 1 123 KBytes [SUM] 4.00-5.00 sec 115 MBytes 965 Mbits/sec 369 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 5.00-6.00 sec 15.0 MBytes 126 Mbits/sec 28 117 KBytes [ 7] 5.00-6.00 sec 16.2 MBytes 136 Mbits/sec 4 170 KBytes [ 9] 5.00-6.00 sec 10.0 MBytes 83.9 Mbits/sec 64 77.8 KBytes [ 11] 5.00-6.00 sec 11.2 MBytes 94.4 Mbits/sec 34 99.0 KBytes [ 13] 5.00-6.00 sec 10.0 MBytes 83.9 Mbits/sec 27 79.2 KBytes [ 15] 5.00-6.00 sec 8.75 MBytes 73.4 Mbits/sec 17 63.6 KBytes [ 17] 5.00-6.00 sec 11.2 MBytes 94.4 Mbits/sec 21 93.3 KBytes [ 19] 5.00-6.00 sec 8.75 MBytes 73.4 Mbits/sec 47 59.4 KBytes [ 21] 5.00-6.00 sec 8.75 MBytes 73.4 Mbits/sec 32 55.1 KBytes [ 23] 5.00-6.00 sec 15.0 MBytes 126 Mbits/sec 72 87.7 KBytes [SUM] 5.00-6.00 sec 115 MBytes 965 Mbits/sec 346 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 6.00-7.00 sec 11.2 MBytes 94.4 Mbits/sec 78 73.5 KBytes [ 7] 6.00-7.00 sec 16.2 MBytes 136 Mbits/sec 37 110 KBytes [ 9] 6.00-7.00 sec 10.0 MBytes 83.9 Mbits/sec 53 39.6 KBytes [ 11] 6.00-7.00 sec 7.50 MBytes 62.9 Mbits/sec 43 53.7 KBytes [ 13] 6.00-7.00 sec 13.8 MBytes 115 Mbits/sec 16 106 KBytes [ 15] 6.00-7.00 sec 8.75 MBytes 73.4 Mbits/sec 20 59.4 KBytes [ 17] 6.00-7.00 sec 13.8 MBytes 115 Mbits/sec 34 72.1 KBytes [ 19] 6.00-7.00 sec 10.0 MBytes 83.9 Mbits/sec 45 46.7 KBytes [ 21] 6.00-7.00 sec 10.0 MBytes 83.9 Mbits/sec 32 74.9 KBytes [ 23] 6.00-7.00 sec 13.8 MBytes 115 Mbits/sec 15 154 KBytes [SUM] 6.00-7.00 sec 115 MBytes 965 Mbits/sec 373 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 7.00-8.00 sec 8.75 MBytes 73.4 Mbits/sec 44 45.2 KBytes [ 7] 7.00-8.00 sec 17.5 MBytes 147 Mbits/sec 38 165 KBytes [ 9] 7.00-8.00 sec 7.50 MBytes 62.9 Mbits/sec 29 72.1 KBytes [ 11] 7.00-8.00 sec 11.2 MBytes 94.4 Mbits/sec 21 86.3 KBytes [ 13] 7.00-8.00 sec 12.5 MBytes 105 Mbits/sec 29 93.3 KBytes [ 15] 7.00-8.00 sec 10.0 MBytes 83.9 Mbits/sec 16 99.0 KBytes [ 17] 7.00-8.00 sec 11.2 MBytes 94.4 Mbits/sec 53 70.7 KBytes [ 19] 7.00-8.00 sec 7.50 MBytes 62.9 Mbits/sec 45 63.6 KBytes [ 21] 7.00-8.00 sec 10.0 MBytes 83.9 Mbits/sec 43 62.2 KBytes [ 23] 7.00-8.00 sec 18.8 MBytes 157 Mbits/sec 32 151 KBytes [SUM] 7.00-8.00 sec 115 MBytes 965 Mbits/sec 350 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 8.00-9.00 sec 10.0 MBytes 83.9 Mbits/sec 25 80.6 KBytes [ 7] 8.00-9.00 sec 18.8 MBytes 157 Mbits/sec 41 103 KBytes [ 9] 8.00-9.00 sec 11.2 MBytes 94.4 Mbits/sec 34 72.1 KBytes [ 11] 8.00-9.00 sec 13.8 MBytes 115 Mbits/sec 5 158 KBytes [ 13] 8.00-9.00 sec 10.0 MBytes 83.9 Mbits/sec 68 67.9 KBytes [ 15] 8.00-9.00 sec 11.2 MBytes 94.4 Mbits/sec 58 65.0 KBytes [ 17] 8.00-9.00 sec 8.75 MBytes 73.4 Mbits/sec 33 65.0 KBytes [ 19] 8.00-9.00 sec 10.0 MBytes 83.9 Mbits/sec 19 105 KBytes [ 21] 8.00-9.00 sec 8.75 MBytes 73.4 Mbits/sec 30 58.0 KBytes [ 23] 8.00-9.00 sec 10.0 MBytes 83.9 Mbits/sec 40 76.4 KBytes [SUM] 8.00-9.00 sec 112 MBytes 944 Mbits/sec 353 - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 9.00-10.00 sec 12.5 MBytes 105 Mbits/sec 29 102 KBytes [ 7] 9.00-10.00 sec 12.5 MBytes 105 Mbits/sec 57 89.1 KBytes [ 9] 9.00-10.00 sec 10.0 MBytes 83.9 Mbits/sec 65 77.8 KBytes [ 11] 9.00-10.00 sec 13.8 MBytes 115 Mbits/sec 38 69.3 KBytes [ 13] 9.00-10.00 sec 12.5 MBytes 105 Mbits/sec 30 63.6 KBytes [ 15] 9.00-10.00 sec 10.0 MBytes 83.9 Mbits/sec 27 76.4 KBytes [ 17] 9.00-10.00 sec 10.0 MBytes 83.9 Mbits/sec 27 107 KBytes [ 19] 9.00-10.00 sec 16.2 MBytes 136 Mbits/sec 43 103 KBytes [ 21] 9.00-10.00 sec 10.0 MBytes 83.9 Mbits/sec 23 72.1 KBytes [ 23] 9.00-10.00 sec 10.0 MBytes 83.9 Mbits/sec 40 79.2 KBytes [SUM] 9.00-10.00 sec 118 MBytes 986 Mbits/sec 379 - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 140 MBytes 118 Mbits/sec 1744 sender [ 5] 0.00-10.01 sec 137 MBytes 115 Mbits/sec receiver [ 7] 0.00-10.00 sec 146 MBytes 122 Mbits/sec 2354 sender [ 7] 0.00-10.01 sec 142 MBytes 119 Mbits/sec receiver [ 9] 0.00-10.00 sec 136 MBytes 114 Mbits/sec 3125 sender [ 9] 0.00-10.01 sec 133 MBytes 112 Mbits/sec receiver [ 11] 0.00-10.00 sec 111 MBytes 92.8 Mbits/sec 1271 sender [ 11] 0.00-10.01 sec 107 MBytes 89.7 Mbits/sec receiver [ 13] 0.00-10.00 sec 121 MBytes 101 Mbits/sec 2770 sender [ 13] 0.00-10.01 sec 118 MBytes 98.7 Mbits/sec receiver [ 15] 0.00-10.00 sec 112 MBytes 93.8 Mbits/sec 1777 sender [ 15] 0.00-10.01 sec 109 MBytes 91.4 Mbits/sec receiver [ 17] 0.00-10.00 sec 120 MBytes 101 Mbits/sec 1463 sender [ 17] 0.00-10.01 sec 116 MBytes 97.4 Mbits/sec receiver [ 19] 0.00-10.00 sec 110 MBytes 92.3 Mbits/sec 1384 sender [ 19] 0.00-10.01 sec 107 MBytes 89.3 Mbits/sec receiver [ 21] 0.00-10.00 sec 118 MBytes 99.0 Mbits/sec 1542 sender [ 21] 0.00-10.01 sec 115 MBytes 96.1 Mbits/sec receiver [ 23] 0.00-10.00 sec 127 MBytes 106 Mbits/sec 1644 sender [ 23] 0.00-10.01 sec 124 MBytes 104 Mbits/sec receiver [SUM] 0.00-10.00 sec 1.21 GBytes 1.04 Gbits/sec 19074 sender [SUM] 0.00-10.01 sec 1.18 GBytes 1.01 Gbits/sec receiver iperf Done.
ubuntu@instance-20220116-0316:~$ iperf3 -c speedtest.wtnet.de -p 5200 -P 10 -4 -R Connecting to host speedtest.wtnet.de, port 5200 Reverse mode, remote host speedtest.wtnet.de is sending [ 5] local 10.0.0.130 port 45842 connected to 213.209.106.95 port 5200 [ 7] local 10.0.0.130 port 45844 connected to 213.209.106.95 port 5200 [ 9] local 10.0.0.130 port 45846 connected to 213.209.106.95 port 5200 [ 11] local 10.0.0.130 port 45848 connected to 213.209.106.95 port 5200 [ 13] local 10.0.0.130 port 45850 connected to 213.209.106.95 port 5200 [ 15] local 10.0.0.130 port 45852 connected to 213.209.106.95 port 5200 [ 17] local 10.0.0.130 port 45854 connected to 213.209.106.95 port 5200 [ 19] local 10.0.0.130 port 45856 connected to 213.209.106.95 port 5200 [ 21] local 10.0.0.130 port 45858 connected to 213.209.106.95 port 5200 [ 23] local 10.0.0.130 port 45860 connected to 213.209.106.95 port 5200 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 102 MBytes 854 Mbits/sec [ 7] 0.00-1.00 sec 17.3 MBytes 145 Mbits/sec [ 9] 0.00-1.00 sec 6.38 MBytes 53.5 Mbits/sec [ 11] 0.00-1.00 sec 6.12 MBytes 51.3 Mbits/sec [ 13] 0.00-1.00 sec 6.38 MBytes 53.5 Mbits/sec [ 15] 0.00-1.00 sec 5.84 MBytes 49.0 Mbits/sec [ 17] 0.00-1.00 sec 5.41 MBytes 45.4 Mbits/sec [ 19] 0.00-1.00 sec 6.31 MBytes 52.9 Mbits/sec [ 21] 0.00-1.00 sec 5.82 MBytes 48.8 Mbits/sec [ 23] 0.00-1.00 sec 5.94 MBytes 49.8 Mbits/sec [SUM] 0.00-1.00 sec 167 MBytes 1.40 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 1.00-2.00 sec 14.3 MBytes 120 Mbits/sec [ 7] 1.00-2.00 sec 22.1 MBytes 185 Mbits/sec [ 9] 1.00-2.00 sec 11.5 MBytes 96.5 Mbits/sec [ 11] 1.00-2.00 sec 9.54 MBytes 80.1 Mbits/sec [ 13] 1.00-2.00 sec 9.46 MBytes 79.3 Mbits/sec [ 15] 1.00-2.00 sec 7.94 MBytes 66.6 Mbits/sec [ 17] 1.00-2.00 sec 7.42 MBytes 62.2 Mbits/sec [ 19] 1.00-2.00 sec 9.59 MBytes 80.4 Mbits/sec [ 21] 1.00-2.00 sec 13.2 MBytes 111 Mbits/sec [ 23] 1.00-2.00 sec 9.74 MBytes 81.8 Mbits/sec [SUM] 1.00-2.00 sec 115 MBytes 963 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 2.00-3.00 sec 8.18 MBytes 68.6 Mbits/sec [ 7] 2.00-3.00 sec 11.1 MBytes 92.8 Mbits/sec [ 9] 2.00-3.00 sec 14.9 MBytes 125 Mbits/sec [ 11] 2.00-3.00 sec 15.1 MBytes 126 Mbits/sec [ 13] 2.00-3.00 sec 10.8 MBytes 90.9 Mbits/sec [ 15] 2.00-3.00 sec 8.65 MBytes 72.5 Mbits/sec [ 17] 2.00-3.00 sec 10.9 MBytes 91.8 Mbits/sec [ 19] 2.00-3.00 sec 11.5 MBytes 96.1 Mbits/sec [ 21] 2.00-3.00 sec 13.2 MBytes 110 Mbits/sec [ 23] 2.00-3.00 sec 10.5 MBytes 88.3 Mbits/sec [SUM] 2.00-3.00 sec 115 MBytes 963 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 3.00-4.00 sec 12.1 MBytes 102 Mbits/sec [ 7] 3.00-4.00 sec 13.2 MBytes 110 Mbits/sec [ 9] 3.00-4.00 sec 11.0 MBytes 92.6 Mbits/sec [ 11] 3.00-4.00 sec 13.0 MBytes 109 Mbits/sec [ 13] 3.00-4.00 sec 11.6 MBytes 97.0 Mbits/sec [ 15] 3.00-4.00 sec 10.2 MBytes 85.5 Mbits/sec [ 17] 3.00-4.00 sec 10.4 MBytes 87.5 Mbits/sec [ 19] 3.00-4.00 sec 8.71 MBytes 73.1 Mbits/sec [ 21] 3.00-4.00 sec 14.7 MBytes 124 Mbits/sec [ 23] 3.00-4.00 sec 9.66 MBytes 81.0 Mbits/sec [SUM] 3.00-4.00 sec 115 MBytes 962 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 4.00-5.00 sec 13.8 MBytes 116 Mbits/sec [ 7] 4.00-5.00 sec 11.2 MBytes 94.0 Mbits/sec [ 9] 4.00-5.00 sec 8.76 MBytes 73.5 Mbits/sec [ 11] 4.00-5.00 sec 11.6 MBytes 97.2 Mbits/sec [ 13] 4.00-5.00 sec 14.9 MBytes 125 Mbits/sec [ 15] 4.00-5.00 sec 9.05 MBytes 75.9 Mbits/sec [ 17] 4.00-5.00 sec 12.4 MBytes 104 Mbits/sec [ 19] 4.00-5.00 sec 9.99 MBytes 83.8 Mbits/sec [ 21] 4.00-5.00 sec 13.8 MBytes 116 Mbits/sec [ 23] 4.00-5.00 sec 10.3 MBytes 86.1 Mbits/sec [SUM] 4.00-5.00 sec 116 MBytes 971 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 5.00-6.00 sec 13.3 MBytes 112 Mbits/sec [ 7] 5.00-6.00 sec 10.2 MBytes 85.5 Mbits/sec [ 9] 5.00-6.00 sec 12.2 MBytes 102 Mbits/sec [ 11] 5.00-6.00 sec 11.2 MBytes 94.2 Mbits/sec [ 13] 5.00-6.00 sec 16.0 MBytes 134 Mbits/sec [ 15] 5.00-6.00 sec 8.12 MBytes 68.1 Mbits/sec [ 17] 5.00-6.00 sec 10.1 MBytes 84.7 Mbits/sec [ 19] 5.00-6.00 sec 11.7 MBytes 98.3 Mbits/sec [ 21] 5.00-6.00 sec 11.4 MBytes 95.7 Mbits/sec [ 23] 5.00-6.00 sec 10.9 MBytes 91.7 Mbits/sec [SUM] 5.00-6.00 sec 115 MBytes 966 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 6.00-7.00 sec 16.5 MBytes 138 Mbits/sec [ 7] 6.00-7.00 sec 15.3 MBytes 128 Mbits/sec [ 9] 6.00-7.00 sec 10.8 MBytes 90.9 Mbits/sec [ 11] 6.00-7.00 sec 7.67 MBytes 64.3 Mbits/sec [ 13] 6.00-7.00 sec 8.88 MBytes 74.5 Mbits/sec [ 15] 6.00-7.00 sec 9.65 MBytes 81.0 Mbits/sec [ 17] 6.00-7.00 sec 8.26 MBytes 69.3 Mbits/sec [ 19] 6.00-7.00 sec 12.8 MBytes 107 Mbits/sec [ 21] 6.00-7.00 sec 15.8 MBytes 132 Mbits/sec [ 23] 6.00-7.00 sec 8.70 MBytes 73.0 Mbits/sec [SUM] 6.00-7.00 sec 114 MBytes 958 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 7.00-8.00 sec 8.85 MBytes 74.2 Mbits/sec [ 7] 7.00-8.00 sec 18.7 MBytes 157 Mbits/sec [ 9] 7.00-8.00 sec 7.53 MBytes 63.1 Mbits/sec [ 11] 7.00-8.00 sec 9.67 MBytes 81.1 Mbits/sec [ 13] 7.00-8.00 sec 5.62 MBytes 47.1 Mbits/sec [ 15] 7.00-8.00 sec 14.6 MBytes 123 Mbits/sec [ 17] 7.00-8.00 sec 10.7 MBytes 90.1 Mbits/sec [ 19] 7.00-8.00 sec 10.6 MBytes 89.2 Mbits/sec [ 21] 7.00-8.00 sec 22.3 MBytes 187 Mbits/sec [ 23] 7.00-8.00 sec 6.36 MBytes 53.4 Mbits/sec [SUM] 7.00-8.00 sec 115 MBytes 966 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 8.00-9.00 sec 13.8 MBytes 115 Mbits/sec [ 7] 8.00-9.00 sec 13.3 MBytes 111 Mbits/sec [ 9] 8.00-9.00 sec 9.93 MBytes 83.3 Mbits/sec [ 11] 8.00-9.00 sec 13.6 MBytes 114 Mbits/sec [ 13] 8.00-9.00 sec 8.48 MBytes 71.1 Mbits/sec [ 15] 8.00-9.00 sec 13.7 MBytes 115 Mbits/sec [ 17] 8.00-9.00 sec 12.6 MBytes 106 Mbits/sec [ 19] 8.00-9.00 sec 8.90 MBytes 74.6 Mbits/sec [ 21] 8.00-9.00 sec 11.4 MBytes 95.9 Mbits/sec [ 23] 8.00-9.00 sec 10.1 MBytes 85.0 Mbits/sec [SUM] 8.00-9.00 sec 116 MBytes 972 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ 5] 9.00-10.00 sec 15.4 MBytes 130 Mbits/sec [ 7] 9.00-10.00 sec 7.63 MBytes 64.0 Mbits/sec [ 9] 9.00-10.00 sec 9.52 MBytes 79.8 Mbits/sec [ 11] 9.00-10.00 sec 18.8 MBytes 158 Mbits/sec [ 13] 9.00-10.00 sec 16.5 MBytes 138 Mbits/sec [ 15] 9.00-10.00 sec 8.81 MBytes 73.9 Mbits/sec [ 17] 9.00-10.00 sec 8.84 MBytes 74.1 Mbits/sec [ 19] 9.00-10.00 sec 10.9 MBytes 91.7 Mbits/sec [ 21] 9.00-10.00 sec 7.89 MBytes 66.1 Mbits/sec [ 23] 9.00-10.00 sec 9.79 MBytes 82.0 Mbits/sec [SUM] 9.00-10.00 sec 114 MBytes 957 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.01 sec 221 MBytes 186 Mbits/sec 1160 sender [ 5] 0.00-10.00 sec 218 MBytes 183 Mbits/sec receiver [ 7] 0.00-10.01 sec 143 MBytes 119 Mbits/sec 990 sender [ 7] 0.00-10.00 sec 140 MBytes 117 Mbits/sec receiver [ 9] 0.00-10.01 sec 106 MBytes 88.5 Mbits/sec 430 sender [ 9] 0.00-10.00 sec 103 MBytes 86.0 Mbits/sec receiver [ 11] 0.00-10.01 sec 120 MBytes 101 Mbits/sec 378 sender [ 11] 0.00-10.00 sec 116 MBytes 97.6 Mbits/sec receiver [ 13] 0.00-10.01 sec 112 MBytes 93.6 Mbits/sec 555 sender [ 13] 0.00-10.00 sec 109 MBytes 91.1 Mbits/sec receiver [ 15] 0.00-10.01 sec 99.5 MBytes 83.4 Mbits/sec 470 sender [ 15] 0.00-10.00 sec 96.6 MBytes 81.1 Mbits/sec receiver [ 17] 0.00-10.01 sec 99.7 MBytes 83.6 Mbits/sec 496 sender [ 17] 0.00-10.00 sec 97.2 MBytes 81.5 Mbits/sec receiver [ 19] 0.00-10.01 sec 103 MBytes 86.6 Mbits/sec 449 sender [ 19] 0.00-10.00 sec 101 MBytes 84.7 Mbits/sec receiver [ 21] 0.00-10.01 sec 133 MBytes 111 Mbits/sec 465 sender [ 21] 0.00-10.00 sec 130 MBytes 109 Mbits/sec receiver [ 23] 0.00-10.01 sec 94.1 MBytes 78.9 Mbits/sec 426 sender [ 23] 0.00-10.00 sec 92.0 MBytes 77.2 Mbits/sec receiver [SUM] 0.00-10.01 sec 1.20 GBytes 1.03 Gbits/sec 5819 sender [SUM] 0.00-10.00 sec 1.17 GBytes 1.01 Gbits/sec receiver iperf Done. u
When I was trying to create a Oracle Cloud instance using Chrome, when I selected the Ubuntu image, the select image dialog closed and the image did not get selected.
However, the solution is simple: Use Firefox to create the instance. After that, you can continue to work with the instance using Chrome.
Quite simple. Just install it using
sudo apt-get install lirc
Update /boot/config.txt
with dtoverlay=gpio-ir,gpio_pin=18
To use lirc in “default” mode (the default mode after installation is “devinput” mode) modify by sudo nano /etc/lirc/lirc_options.conf
.
Change to driver = default
BTW: My first post on this blog 🙂
const mqtt = require('mqtt') const client = mqtt.connect('mqtt://user:[email protected]') client.on('connect', () => { client.subscribe('mytopic'); }) client.on('message', (topic, message) => { console.log(topic, JSON.parse(message)) })
If required, you can install the mqtt
library using
npm i --save mqtt
Also see: NodeJS MQTT minimal subscribe example with JSON messages
const mqtt = require('mqtt') const client = mqtt.connect('mqtt://user:[email protected]') client.on('connect', () => { client.subscribe('mytopic'); }) client.on('message', (topic, message) => { console.log(topic, message) })
If required, you can install the mqtt
library using
npm i --save mqtt
When Homeassistant shows you 403: forbidden
instead of the login prompt, the most likely cause is that your user got banned due to too many failed login attempts.
Edit configuration.yaml
and set
login_attempts_threshold: 100
from the default 5
, which should unban you. You might also need to configure the trusted_proxies
to contain the IP of a reverse proxy server (typically running on 127.0.0.1
). If that does not help, disable the IP ban entirely. This is a complete configuration.yml
http
section that works:
http: use_x_forwarded_for: true trusted_proxies: - 127.0.0.1 ip_ban_enabled: false login_attempts_threshold: 500
Although portMAX_DELAY
is listed as value for waiting indefinitely, it will only actually wait indefinitely if INCLUDE_vTaskSuspend
is enabled in the FreeRTOS config.
portMAX_DELAY
is typically defined as 0xFFFFFFFF
i.e. 2^32-1
:
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL
(however if 16 bit ticks are enabled using configUSE_16_BIT_TICKS
it will be defined as 0xFFFF
(2^16-1
).
In case INCLUDE_vTaskSuspend
is enabled, this is treated as a special value and will actually wait indefinitely. If INCLUDE_vTaskSuspend
is not defined, it will only wait for 0xFFFFFFFF
ticks (assuming 32-bit system ticks.
In other words, this will wait for only about 7 weeks if FreeRTOS is defined to tick every millisecond.
While trying to compile your project, you see an error message like
error: 'DynamicJSONDocument' was not declared in this scope
The Json
in DynamicJsonDocument
must be spelled camel case: Json
, not JSON
! The correct spelling is DynamicJsonDocument
.
If that does not help, ensure
#include <ArduinoJson.h>
is at the top of the file where the error occurs.
While trying to compile your PlatformIO project, you see an error message like
.pio/libdeps/ESP32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp:43:5: error: static assertion failed: To use 64-bit integers with ArduinoJson, you must set ARDUINOJSON_USE_LONG_LONG to 1. See https://arduinojson.org/v6/api/config/use_long_long/ ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED(T); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from .pio/libdeps/ESP32/ArduinoJson/src/ArduinoJson.hpp:30, from .pio/libdeps/ESP32/ArduinoJson/src/ArduinoJson.h:9, from include/MQTT/StatusMessage.hpp:2, from src/MQTT/StatusMessage.cpp:1: .pio/libdeps/ESP32/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp: In instantiation of 'static void ArduinoJson6185_1::Converter<T, Enable>::toJson(const T&, ArduinoJson6185_1::VariantRef) [with T = long long int (*)(); Enable = void]': .pio/libdeps/ESP32/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp:98:27: required from 'bool ArduinoJson6185_1::VariantRef::set(T*) const [with T = long long int()]' .pio/libdeps/ESP32/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp:58:5: required from 'ArduinoJson6185_1::MemberProxy<TParent, TStringRef>::this_type& ArduinoJson6185_1::MemberProxy<TParent, TStringRef>::operator=(TChar*) [with TChar = long long int(); TObject = ArduinoJson6185_1::JsonDocument&; TStringRef = const char*; ArduinoJson6185_1::MemberProxy<TParent, TStringRef>::this_type = ArduinoJson6185_1::MemberProxy<ArduinoJson6185_1::JsonDocument&, const char*>]'
Add -DARDUINOJSON_USE_LONG_LONG=1
to the build_flags
in platformio.ini
. If build_flags
does not exist in platformio.ini
, create it after [env:...]
build_flags = -DARDUINOJSON_USE_LONG_LONG=1
You must always use 64 bit timestamps for milliseconds since epochs! 32 bits in milliseconds will only cover 1.6 months!
When starting docker on a VM that got suddenly turned off before during a power outage, the docker daemon failed to start up with the following error log:
Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.946815577Z" level=info msg="Starting up" Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.947842629Z" level=info msg="detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf" Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.949500623Z" level=info msg="parsed scheme: \"unix\"" module=grpc Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.949617127Z" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.949705114Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.949776371Z" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.950747679Z" level=info msg="parsed scheme: \"unix\"" module=grpc Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.950788173Z" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.950806216Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///run/containerd/containerd.sock <nil> 0 <nil>}] <nil> <nil>}" module=grpc Jan 05 15:15:14 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:14.950815090Z" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:15.012683899Z" level=info msg="[graphdriver] using prior storage driver: overlay2" Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:15.027806434Z" level=warning msg="Docker could not enable SELinux on the host system" Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:15.176098505Z" level=info msg="Loading containers: start." Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: time="2022-01-05T15:15:15.728503609Z" level=info msg="Removing stale sandbox 22e03a9f65217fa0ce1603fa1d6326b7bf412777be94e930b02dbe6554549084 (154aa4bd403045e229b39cc4dda1d16a72b45d18671cab7c993bff4eaee9c2c9)" Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: panic: assertion failed: write: circular dependency occurred Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: goroutine 1 [running]: Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt._assert(...) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/db.go:1172 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt.(*node).write(0xc0001e16c0, 0xc001381000) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/node.go:233 +0x3c5 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt.(*node).spill(0xc0001e16c0, 0xc0012da078, 0x1) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/node.go:374 +0x225 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt.(*node).spill(0xc0001e1650, 0xc000fefaa0, 0xc000d9dc50) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/node.go:346 +0xbc Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt.(*Bucket).spill(0xc000d6f180, 0xc000fefa00, 0xc000d9de40) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/bucket.go:570 +0x49a Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt.(*Bucket).spill(0xc000fca2b8, 0x310b759f, 0x55dfe7bf17e0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/bucket.go:537 +0x3f6 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt.(*Tx).Commit(0xc000fca2a0, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/tx.go:160 +0xe8 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/go.etcd.io/bbolt.(*DB).Update(0xc000d6bc00, 0xc000d9e078, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/go.etcd.io/bbolt/db.go:701 +0x105 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libkv/store/boltdb.(*BoltDB).AtomicPut(0xc000a862d0, 0xc000fd32d0, 0x65, 0xc000d46300, 0x179, 0x180, 0xc000fef890, 0x0, 0x55dfe5407900, 0x0, ...) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libkv/store/boltdb/boltdb.go:371 +0x225 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork/datastore.(*datastore).PutObjectAtomic(0xc000c3bbc0, 0x55dfe6bd1398, 0xc000efad20, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/datastore/datastore.go:415 +0x3ca Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork/drivers/bridge.(*driver).storeUpdate(0xc0000c3c00, 0x55dfe6bd1398, 0xc000efad20, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/drivers/bridge/bridge_store.go:106 +0x6e Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork/drivers/bridge.(*driver).RevokeExternalConnectivity(0xc0000c3c00, 0xc000f19d80, 0x40, 0xc00111c300, 0x40, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/drivers/bridge/bridge.go:1405 +0x1f1 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork.(*endpoint).sbLeave(0xc000d41e40, 0xc000f63200, 0x1, 0x0, 0x0, 0x0, 0x0, 0xc001b91ce0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/endpoint.go:751 +0x1326 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork.(*endpoint).Delete(0xc000d41b80, 0xc000f19d01, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/endpoint.go:842 +0x374 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork.(*sandbox).delete(0xc000f63200, 0x1, 0x55dfe61ee216, 0x1e) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/sandbox.go:229 +0x191 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork.(*controller).sandboxCleanup(0xc000432a00, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/sandbox_store.go:278 +0xdae Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/docker/libnetwork.New(0xc0000c3b80, 0x9, 0x10, 0xc000878090, 0xc001e69e60, 0xc0000c3b80, 0x9) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/docker/libnetwork/controller.go:248 +0x726 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/daemon.(*Daemon).initNetworkController(0xc00000c1e0, 0xc00021a000, 0xc001e69e60, 0xc000151270, 0xc00000c1e0, 0xc000686a10, 0xc001e69e60) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/daemon/daemon_unix.go:855 +0xac Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/daemon.(*Daemon).restore(0xc00000c1e0, 0xc00045c4c0, 0xc00023e2a0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/daemon/daemon.go:490 +0x52c Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/daemon.NewDaemon(0x55dfe6bad710, 0xc00045c4c0, 0xc00021a000, 0xc000878090, 0x0, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/daemon/daemon.go:1150 +0x2c1d Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: main.(*DaemonCli).start(0xc000b62720, 0xc00009a8a0, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/cmd/dockerd/daemon.go:195 +0x785 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: main.runDaemon(...) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/cmd/dockerd/docker_unix.go:13 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: main.newDaemonCommand.func1(0xc0000bc2c0, 0xc0000b2000, 0x0, 0xc, 0x0, 0x0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/cmd/dockerd/docker.go:34 +0x7d Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/spf13/cobra.(*Command).execute(0xc0000bc2c0, 0xc00011caa0, 0xc, 0xc, 0xc0000bc2c0, 0xc00011caa0) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/spf13/cobra/command.go:850 +0x472 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc0000bc2c0, 0x0, 0x0, 0x10) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/spf13/cobra/command.go:958 +0x375 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: github.com/docker/docker/vendor/github.com/spf13/cobra.(*Command).Execute(...) Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/vendor/github.com/spf13/cobra/command.go:895 Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: main.main() Jan 05 15:15:15 CoreOS-Haar dockerd[5333]: /builddir/build/BUILD/moby-20.10.11/src/github.com/docker/docker/cmd/dockerd/docker.go:97 +0x185 Jan 05 15:15:15 CoreOS-Haar systemd[1]: docker.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
First, try moving /var/lib/docker/network/files/local-kv.db
:
sudo mv /var/lib/docker/network/files/local-kv.db /opt/old-docker-local-kv.db
and then restarting docker
using e.g. sudo systemctl restart docker,
which worked for many users on GitHub.
Only if that does not work, try the following brute-force method!
Move the /var/lib/docker
directory to a new location for backup, after which docker was able to start up again:
sudo mv /var/lib/docker /opt/old-var-lib-docker
This is a pretty brute-force method of doing that but for me it worked totally fine since my setup did not use volumes but local directories. In case you are actively using volumes, you might need to restore the volumes from /opt/old-var-lib-docker
manually!
There are multiple different types of connectors for NEMA23 stepper motors. This is one of them.
A typical connector for NEMA23 stepper motors such as the Nanotec SCA5618X2804-A is the JST B6P-VH (part number of the male connector on the motor, source: NanoTec datasheet).
The corresponding mating connector is the JST VHR-6N, the series of connectors is being called JST VH. The pitch is 3.96mm.
The crimp contacts part numbers are (source: datasheet):
I use this command to convert the video from my phone (in UHD / 4K) for use as input Media in DaVinci Resolve using the DNxHR codec.
ffmpeg -i input.mp4 -vcodec dnxhd -acodec pcm_s16le -pix_fmt yuv422p -r 30000/1001 -profile:v dnxhr_hq output.mov
Note that the DNxHR files are huuuuuuge, around 10GB per minute even for some rather uncomplicated video! However, encoding is pretty fast (around 0.5x real-time on my computer) and you won’t really lose any significant amount of quality in this video type.
This shell script will batch-encode all .mp4
files in the current folder to DNxHR
for i in *.mp4 ; do ffmpeg -i $i -vcodec dnxhd -acodec pcm_s16le -pix_fmt yuv422p -r 30000/1001 -profile:v dnxhr_hq ${i}.mov ; done