• person rss_feed

    Timothée Jaussoin’s feed

    Blog

    • chevron_right

      Timothée Jaussoin · Monday, 23 March, 2020 - 07:45

      Contact publication



    • reply chevron_right

      RPi4: Installing Movim

      A little bit of history... My RPi4 already has an XMPP server running with Prosody, an everything is running great. But I wanted more functionality and Movim seemed to be a great fit. Pretty interface, great place for news feeds, and even has blogging included. Neat! As usual with my RPi4 I have to build my own images due to its ARM architecture, but that did not quite work with Movim. It loaded, but was unstable and many things did not work. I had a hunch it was something with the database, and many eons ago I had read something about bad Postgres performance or something when running in 32-bit mode… anyway, luckily Postgres has an image for both armhf (32-bit, default for RPi4) and arm64v8 (64-bit) architectures, so would be quite easy to test as long as Docker supported running arm64v8 in the RPi4 on Raspbian. Last time I looked it did not work, maybe something changed since then? Enabling 64-bit support And it did! Someone discovered how to run and build the 64-bit images that I needed, I described how to do it here in my other blog post here. After configuring Docker to run 64-bit images, it was quite easy afterwards. I tested Postgres in 64-bit mode and Movim in 32-bit mode, almost everything was working! But some cards were not showing… By looking at Movim's output I saw the following message: Warning: unpack(): 64-bit format codes are not available for 32-bit versions of PHP in /var/www/html/vendor/ratchet/rfc6455/src/Messaging/MessageBuffer.php on line 122 Uhm… So let's make everything 64-bit! And so I did, and now everything is working as they should :) And finally... Building the image Clone Movim Docker repository with git somewhere: git clone https://github.com/movim/movim_docker Edit the file Dockerfile inside the repository as follows: -FROM php:7.3-fpm +FROM arm64v8/php:7.3-fpm Run sudo docker build --no-cache --pull --rm=true -t movim/movim:latest . Done! You can now run your own Movim pod with this image :) Here is a docker-compose.yml file based on my own for those interested: version: '3.6' services: movim: restart: unless-stopped environment: MOVIM_ADMIN: admin MOVIM_PASSWORD: CHANGEME MOVIM_DOMAIN: https://YOURMOVIM.DOMAIN MOVIM_PORT: 8080 MOVIM_INTERFACE: 0.0.0.0 POSTGRES_DB: movim POSTGRES_HOST: postgresql POSTGRES_PORT: 5432 POSTGRES_USER: movim POSTGRES_PASSWORD: CHANGEME_POSTGRES image: movim/movim:latest volumes: - ./movim:/var/www/html:rw nginx: restart: unless-stopped image: arm64v8/nginx:mainline-alpine ports: - "443:443" volumes: - ./movim:/var/www/html:ro - ./nginx/conf.d:/etc/nginx/conf.d:ro - ./nginx/certs:/etc/ssl/certs/:ro postgresql: restart: unless-stopped environment: POSTGRES_DB: movim POSTGRES_PASSWORD: CHANGEME_POSTGRES POSTGRES_USER: movim image: arm64v8/postgres:11.4-alpine volumes: - ./postgres/data:/var/lib/postgresql/data:rw And config file for nginx: server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name YOUR_SERVER.DOMAIN; ssl_certificate YOUR_SERVER.DOMAIN.crt; ssl_certificate_key YOUR_SERVER.DOMAIN.key; location / { alias /var/www/html/public/; index index.html index.htm index.php; add_header Access-Control-Allow-Origin *; location ~ \.php$ { fastcgi_pass movim:9000; fastcgi_index index.php; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params; } location /ws/ { proxy_pass http://movim:8080/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_redirect off; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } I hope this can also help someone else have a good time with their RPi4! 🙂

      people Felipe 22 March, 2020