getumbrel / umbrel-os

umbrelOS for Raspberry Pi 4 (only). Covert your Raspberry Pi into a home server in one click. For other hardware, checkout https://github.com/getumbrel/umbrel
https://umbrel.com
BSD 3-Clause "New" or "Revised" License
595 stars 55 forks source link

Umbrel docker not compatible with armv7 #257

Open oijkn opened 2 years ago

oijkn commented 2 years ago

Hello, I'm trying to run Docker version of the Umbrel OS because I have already stuff installed on my RPI 4. But that doesn't work when I run ./scripts/start because some Docker images are not build for 32 bit architecture like armv7.

So I tried to build these missing images (see the docker-compose file below) for the armv7 architecture. According to the logs it seems that the mempool docker has a problem with mariadb which does not have an armv7 manifest. i will try to build a docker in armv7. Where in the code can I modify the pulling from library/mariadb?

The stack starts well and I can access to the dashboard.

Here are the images compiled for armv7 :

image: oijkn/umbrel-tor-server:0.4.6.8
image: oijkn/umbrel-lnd:v0.14.2-beta
image: oijkn/umbrel-electrs:v0.9.4

Currently I'm having trouble installing the mempool app, the install button keeps looping with installing. On the other hand I was able to install BTC RPC Explorer without any problem, but logs show some problems.

version: '3.7'

services:
        tor_proxy:
                container_name: tor
                image: lncm/tor:0.4.5.7@sha256:a83e0d9fd1a35adf025f2f34237ec1810e2a59765988dce1dfb222ca8ef6583c
                user: toruser
                restart: on-failure
                volumes:
                    - ${PWD}/tor/torrc-proxy:/etc/tor/torrc
                    - ${PWD}/tor/data:/var/lib/tor/
                ports:
                  - "127.0.0.1:$TOR_PROXY_PORT:$TOR_PROXY_PORT"
                networks:
                    default:
                        ipv4_address: $TOR_PROXY_IP
        tor_server:
                #image: getumbrel/tor-server:0.4.6.8@sha256:a81797e4a6b0c4709dd6f7c5543ab99e318af329bdf728c5b267f412c51b9a31
                image: oijkn/umbrel-tor-server:0.4.6.8
                restart: on-failure
                volumes:
                    - ${PWD}/tor/torrc-server:/torrc
                    - ${PWD}/tor/data:/data
                environment:
                    HS_PER_PROCESS: "10"
                networks:
                    default:
                        ipv4_address: $TOR_SERVER_IP
        nginx:
                container_name: nginx
                image: nginx:1.17.8@sha256:380eb808e2a3b0dd954f92c1cae2f845e6558a15037efefcabc5b4e03d666d03
                depends_on: [ dashboard, manager ]
                volumes:
                        - ${PWD}/nginx:/etc/nginx
                restart: on-failure
                stop_grace_period: 30s
                ports:
                    - "${NGINX_PORT}:80"
                networks:
                    default:
                        ipv4_address: $NGINX_IP
        bitcoin:
                container_name: bitcoin
                image: lncm/bitcoind:v22.0@sha256:37a1adb29b3abc9f972f0d981f45e41e5fca2e22816a023faa9fdc0084aa4507
                depends_on: [ tor_proxy, manager, nginx ]
                volumes:
                        - ${PWD}/bitcoin:/data/.bitcoin
                restart: on-failure
                stop_grace_period: 15m30s
                ports:
                    - "$BITCOIN_P2P_PORT:$BITCOIN_P2P_PORT"
                networks:
                    default:
                        ipv4_address: $BITCOIN_IP
        lnd:
                container_name: lnd
                image: oijkn/umbrel-lnd:v0.14.2-beta
                user: 1000:1000
                depends_on: [ tor_proxy, manager ]
                volumes:
                        - ${PWD}/lnd:/data/.lnd
                environment:
                  HOME: /data
                restart: on-failure
                stop_grace_period: 5m30s
                ports:
                    - "9735:9735"
                    - "$LND_REST_PORT:$LND_REST_PORT"
                    - "$LND_GRPC_PORT:$LND_GRPC_PORT"
                networks:
                    default:
                        ipv4_address: $LND_IP
        dashboard:
                container_name: dashboard
                image: getumbrel/dashboard:v0.3.32@sha256:545d0253653bb6e48b39b09caf34a1ef55484a6dd8644e5f5e8f164977a7af18
                restart: on-failure
                stop_grace_period: 1m30s
                networks:
                    default:
                        ipv4_address: $DASHBOARD_IP
        manager:
                container_name: manager
                image: getumbrel/manager:v0.2.19@sha256:d94327034d99ec8121d42b61bbec89f2e1797148c56ef60b7cec17486e6a399d
                depends_on: [ tor_proxy ]
                restart: on-failure
                stop_grace_period: 5m30s
                volumes:
                        - ${PWD}:${PWD}
                        - ${PWD}/info.json:/info.json
                        - ${PWD}/db:/db
                        - ${PWD}/events/signals:/signals
                        - ${PWD}/apps:/apps
                        - ${PWD}/lnd:/lnd:ro
                        - ${PWD}/statuses:/statuses
                        - ${PWD}/tor/data:/var/lib/tor/
                        - /var/run/docker.sock:/var/run/docker.sock
                        - ${DOCKER_BINARY:-/usr/bin/docker}:/usr/bin/docker
                        - jwt-public-key:/jwt-public-key
                        - jwt-private-key:/jwt-private-key
                environment:
                    PORT: "3006"
                    USER_PASSWORD_FILE: "/db/user.json"
                    JWT_PUBLIC_KEY_FILE: "/jwt-public-key/jwt.pem"
                    JWT_PRIVATE_KEY_FILE: "/jwt-private-key/jwt.key"
                    JWT_EXPIRATION: "3600"
                    DOCKER_COMPOSE_DIRECTORY: $PWD
                    DEVICE_HOSTS: ${DEVICE_HOSTS:-"http://umbrel.local"}
                    DEVICE_HOSTNAME: ${DEVICE_HOSTNAME:-""}
                    MIDDLEWARE_API_URL: "http://$MIDDLEWARE_IP"
                    UMBREL_SEED_FILE: "/db/umbrel-seed/seed"
                    UMBREL_DASHBOARD_HIDDEN_SERVICE_FILE: "/var/lib/tor/web/hostname"
                    BITCOIN_P2P_HIDDEN_SERVICE_FILE: "/var/lib/tor/bitcoin-p2p/hostname"
                    BITCOIN_P2P_PORT: $BITCOIN_P2P_PORT
                    BITCOIN_RPC_HIDDEN_SERVICE_FILE: "/var/lib/tor/bitcoin-rpc/hostname"
                    BITCOIN_RPC_PORT: $BITCOIN_RPC_PORT
                    BITCOIN_RPC_USER: $BITCOIN_RPC_USER
                    BITCOIN_RPC_PASSWORD: $BITCOIN_RPC_PASS
                    LND_REST_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-rest/hostname"
                    LND_GRPC_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-grpc/hostname"
                    LND_CERT_FILE: "/lnd/tls.cert"
                    LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon"
                    SHUTDOWN_SIGNAL_FILE: "/signals/shutdown"
                    REBOOT_SIGNAL_FILE: "/signals/reboot"
                    GITHUB_REPO: "getumbrel/umbrel"
                    UMBREL_VERSION_FILE: "/info.json"
                    UPDATE_STATUS_FILE: "/statuses/update-status.json"
                    UPDATE_SIGNAL_FILE: "/signals/update"
                    UPDATE_LOCK_FILE: "/statuses/update-in-progress"
                    BACKUP_STATUS_FILE: "/statuses/backup-status.json"
                    DEBUG_STATUS_FILE: "/statuses/debug-status.json"
                    TOR_PROXY_IP: "${TOR_PROXY_IP}"
                    TOR_PROXY_PORT: "${TOR_PROXY_PORT}"
                    TOR_HIDDEN_SERVICE_DIR: "/var/lib/tor"
                    IS_UMBREL_OS: ${IS_UMBREL_OS:-"false"}
                networks:
                    default:
                        ipv4_address: $MANAGER_IP
        middleware:
                container_name: middleware
                image: getumbrel/middleware:v0.1.15@sha256:b8a64ba65c314be6288decef6c87086f04a371b1a82c07599b98b67a7422f9fa
                depends_on: [ manager, bitcoin, lnd ]
                command: ["./wait-for-node-manager.sh", $MANAGER_IP, "npm", "start"]
                restart: on-failure
                volumes:
                        - ${PWD}/lnd:/lnd
                        - jwt-public-key:/jwt-public-key
                environment:
                    PORT: "3005"
                    BITCOIN_HOST: $BITCOIN_IP
                    RPC_PORT: $BITCOIN_RPC_PORT
                    RPC_USER: $BITCOIN_RPC_USER
                    RPC_PASSWORD: $BITCOIN_RPC_PASS
                    LND_NETWORK: $BITCOIN_NETWORK
                    LND_HOST: "${LND_IP}"
                    JWT_PUBLIC_KEY_FILE: "/jwt-public-key/jwt.pem"
                    DEVICE_HOSTS: ${DEVICE_HOSTS:-"http://umbrel.local"}
                networks:
                    default:
                        ipv4_address: $MIDDLEWARE_IP
        neutrino-switcher:
                container_name: neutrino-switcher
                image: getumbrel/neutrino-switcher:v1.3.0@sha256:399ccea7f39129ff16c9c408f9e68a01dd4671f428273f3c3f401a8a0d2f7ddc
                depends_on: [ bitcoin, lnd ]
                restart: on-failure
                volumes:
                    - ${PWD}/lnd:/lnd
                    - ${PWD}/statuses:/statuses
                    - /var/run/docker.sock:/var/run/docker.sock
                environment:
                    JSONRPCURL: "http://${BITCOIN_IP}:${BITCOIN_RPC_PORT}"
                    RPCUSER: $BITCOIN_RPC_USER
                    RPCPASS: $BITCOIN_RPC_PASS
                    LND_CONTAINER_NAME: lnd
                    SLEEPTIME: 3600
                networks:
                    default:
                        ipv4_address: $NEUTRINO_SWITCHER_IP
        electrs:
              container_name: electrs
              image: oijkn/umbrel-electrs:v0.9.4
              volumes:
                - ${PWD}/bitcoin:/data/.bitcoin:ro
                - ${PWD}/electrs:/data
              restart: on-failure
              stop_grace_period: 5m
              ports:
                  - "$ELECTRUM_PORT:$ELECTRUM_PORT"
              networks:
                  default:
                      ipv4_address: $ELECTRUM_IP
networks:
    default:
      name: umbrel_main_network
      ipam:
          driver: default
          config:
              - subnet: "$NETWORK_IP/24"

volumes:
    jwt-public-key:
    jwt-private-key:

Troubleshoot log :

sent 133 bytes  received 15 bytes  296.00 bytes/sec
total size is 1,997  speedup is 13.49
Pulling images for app mempool...
Pulling mariadb ... 
Pulling web     ... 
Pulling api     ... 
Pulling api     ... pulling from mempool/backend
Pulling web     ... pulling from mempool/frontend
Pulling web     ... digest: sha256:38c955caeb58014b26...
Pulling web     ... status: image is up to date for m...
Pulling api     ... digest: sha256:f7b16a6b00ea8aabf3...
Pulling api     ... status: image is up to date for m...
Pulling web     ... done
Pulling api     ... done
Pulling mariadb ... pulling from library/mariadb

ERROR: for mariadb  no matching manifest for linux/arm/v7 in the manifest list entries
no matching manifest for linux/arm/v7 in the manifest list entries
Got signal: debug
karen is getting triggered!

btc-rpc-explorer

web_1  | 2022-06-06T11:20:06.454Z btcexp:errorVerbose Stack: Error: close connect
web_1  |     at /data/node_modules/electrum-client/lib/client.js:192:37
web_1  |     at Array.forEach (<anonymous>)
web_1  |     at ElectrumClient.onClose (/data/node_modules/electrum-client/lib/client.js:191:44)
web_1  |     at ElectrumClient.onClose (/data/node_modules/electrum-client/index.js:69:9)
web_1  |     at Socket.<anonymous> (/data/node_modules/electrum-client/lib/client.js:68:9)
web_1  |     at Socket.emit (events.js:314:20)
web_1  |     at TCP.<anonymous> (net.js:675:12)
web_1  | 2022-06-06T11:36:04.918Z btcexp:app Skipping performance-intensive task: fetch last 24 hrs of blockstats to calculate transaction volume. This is skipped due to the flag 'slowDeviceMode' which defaults to 'true' to protect slow nodes. Set this flag to 'false' to enjoy UTXO set summary details.
web_1  | 2022-06-06T11:36:04.933Z btcexp:app Skipping performance-intensive task: fetch UTXO set summary. This is skipped due to the flag 'slowDeviceMode' which defaults to 'true' to protect slow nodes. Set this flag to 'false' to enjoy UTXO set summary details.
web_1  | 2022-06-06T11:49:28.373Z btcexp:error Error 937gf47dsyde: Error: close connect, json: {}, userData: [object Object] (json: {"host":"10.21.21.10","port":50001,"protocol":"tcp"})
web_1  | 2022-06-06T11:49:28.374Z btcexp:errorVerbose Stack: Error: close connect
web_1  |     at /data/node_modules/electrum-client/lib/client.js:192:37
web_1  |     at Array.forEach (<anonymous>)
web_1  |     at ElectrumClient.onClose (/data/node_modules/electrum-client/lib/client.js:191:44)
web_1  |     at ElectrumClient.onClose (/data/node_modules/electrum-client/index.js:69:9)
web_1  |     at Socket.<anonymous> (/data/node_modules/electrum-client/lib/client.js:68:9)
web_1  |     at Socket.emit (events.js:314:20)
web_1  |     at TCP.<anonymous> (net.js:675:12)
web_1  | 2022-06-06T12:06:04.918Z btcexp:app Skipping performance-intensive task: fetch last 24 hrs of blockstats to calculate transaction volume. This is skipped due to the flag 'slowDeviceMode' which defaults to 'true' to protect slow nodes. Set this flag to 'false' to enjoy UTXO set summary details.
web_1  | 2022-06-06T12:06:04.933Z btcexp:app Skipping performance-intensive task: fetch UTXO set summary. This is skipped due to the flag 'slowDeviceMode' which defaults to 'true' to protect slow nodes. Set this flag to 'false' to enjoy UTXO set summary details.
web_1  | 2022-06-06T12:22:31.021Z btcexp:error Error 937gf47dsyde: Error: close connect, json: {}, userData: [object Object] (json: {"host":"10.21.21.10","port":50001,"protocol":"tcp"})
web_1  | 2022-06-06T12:22:31.025Z btcexp:errorVerbose Stack: Error: close connect
web_1  |     at /data/node_modules/electrum-client/lib/client.js:192:37
web_1  |     at Array.forEach (<anonymous>)
web_1  |     at ElectrumClient.onClose (/data/node_modules/electrum-client/lib/client.js:191:44)
web_1  |     at ElectrumClient.onClose (/data/node_modules/electrum-client/index.js:69:9)
web_1  |     at Socket.<anonymous> (/data/node_modules/electrum-client/lib/client.js:68:9)
web_1  |     at Socket.emit (events.js:314:20)
web_1  |     at TCP.<anonymous> (net.js:675:12)