Digital Signage Deployment with PiSignage
Build the PiSignage server and player Docker images, push them to the Sixfab Registry, and deploy a full digital-signage system on ALPON X5 AI and ALPON X4.
Digital Signage with PiSignage on ALPON
PiSignage is a robust digital-signage solution that runs well on ALPON edge computers. This guide builds the server and player Docker images, pushes them to the Sixfab Registry, and deploys a complete signage system on your ALPON X5 AI or ALPON X4.
Build the PiSignage server and Player2 images for arm64 on
your computer, push them to the Sixfab Registry, then deploy three containers through
Sixfab Connect on your ALPON X5 AI or ALPON X4: MongoDB,
the server, and Player2. Player2 needs X11 access, so grant it with
xhost +, set DISPLAY=:0, mount the X11 and audio volumes, and enable Host Network
and Privileged mode.
Prerequisites
- Docker and buildx installed on your personal computer.
- X11 installed on your ALPON — see Running GUI Apps with X11 in Containers.
To run PiSignage on ALPON, you build both the server and player images. Sixfab has containerized these applications to run on ALPON devices; the Dockerfiles are included below.
Deploying Player2 through Sixfab Connect requires a high-speed internet connection. The image is approximately 2.2 GB, and deployment may fail with timeouts on a slow connection.
-
1
Build the server image
Run these steps on your personal computer, where Docker and buildx are installed. Create a directory for the server:
bash · create directorymkdir pisignage-server cd pisignage-server
Create a
Dockerfilewith this content:Dockerfile · serverFROM node:14.15-alpine3.10 RUN apk update && apk add bash RUN apk add git RUN apk add ffmpeg RUN apk add imagemagick ENV NODE_ENV=production WORKDIR /pisignage-server RUN git clone https://github.com/colloqi/pisignage-server.git /pisignage-server COPY . . RUN npm install --production RUN chmod +x ./wait-for-it.sh CMD [ "./wait-for-it.sh", "127.0.0.1:27017", "--", "node", "server.js"]
Build the server image:
bash · build serverdocker buildx build --platform linux/arm64 -t pisignage-server:latest .
-
2
Build the player image
Create a directory for the player:
bash · create directorymkdir pisignage-player cd pisignage-player
Create a
Dockerfilewith this content:Dockerfile · playerFROM bitnami/minideb:latest-arm64 WORKDIR /root COPY . . RUN apt -y update && apt -y upgrade RUN apt install -y wget unzip nodejs npm sudo chromium net-tools iproute2 rfkill RUN ln -s /usr/bin/chromium /usr/bin/chromium-browser RUN wget https://pisignage.com/releases/pi-image-p2-v14.zip RUN unzip -o pi-image-p2-v14.zip RUN cp player2/build-scripts/install-pisignage.sh . RUN chmod +x install-pisignage.sh RUN chmod +x -R player2/build-scripts RUN chmod +x -R player2/shell-scripts RUN ./install-pisignage.sh RUN sed -i "s/\"--default-background-color='00000000'\"/\"--default-background-color='00000000'\", \"--no-sandbox\"/g" player2/pisignage.js RUN apt update --fix-missing CMD ["./start.sh"]
Build the player image:
bash · build playerdocker buildx build --platform linux/arm64 -t pisignage-player:latest .
-
3
Push both images to the Sixfab Registry
Upload both images so they're available to the device:
- Open the Sixfab Registry page.
- Click + Add Container and follow the prompts for each image.
-
4
Deploy the containers
Deploy three containers from the Applications tab of your asset, in order.
1 · MongoDB
- Click + Deploy, enter a container name, and check “I would like to use my own container path”.
- Set the image name to
arm64v8/mongo:4.4.18. - Enable Host Network, then click Deploy.
2 · PiSignage server
- Click + Deploy, enter a container name, and select the server image and tag.
- Enable Host Network, then click Deploy.
3 · PiSignage Player2
First grant the container access to the graphical interface by running this on the device terminal (see Running GUI Apps with X11 in Containers):
bash · grant X11 accessxhost +
Then click + Deploy, enter a container name, and select the Player2 image and tag. Add this environment variable:
DISPLAY:0Add these volumes (all Read/Write):
X11 socket/tmp/.X11-unix→/tmp/.X11-unix.Xauthority/root/.Xauthority→/root/.XauthorityAudio/dev/snd→/dev/sndEnable Host Network and Privileged, then click Deploy.
-
5
Verify the deployment
- Check the device's main screen to confirm Player2 is running in fullscreen.
- In a browser, open ports
3000and8000at the device's IP to confirm the server and player are up. - To use the local server, update the server address in the Player2 interface (port
8000) to127.0.0.1:3000— otherwise the device keeps talking to the default main server.
Troubleshooting
Make sure a display is physically connected. Without one, xhost + fails to open the display:
xhost: unable to open display ""
If a display is connected, export the variable and retry:
export DISPLAY=:0
A black screen after the Xorg service starts is expected. These display errors usually mean no physical display is connected or the X11 setup is misconfigured.
Updated 19 days ago
