# Screenly OSE Balena VNC

**URL:** <https://forums.screenly.io/t/screenly-ose-balena-vnc/599>\
**Category:** Balena\
**Created:** [August 4, 2021, 4:02am UTC](https://forums.screenly.io/t/screenly-ose-balena-vnc/599 "2021-08-04T04:02:28Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeremythomasjulian](https://avatars.discourse-cdn.com/v4/letter/j/48db29/32.png) [@jeremythomasjulian](https://forums.screenly.io/u/jeremythomasjulian)\
**Post date:** [August 4, 2021, 4:02am UTC](https://forums.screenly.io/t/screenly-ose-balena-vnc/599/1 "2021-08-04T04:02:28Z")

</div>

I have successfully deployed Screenly OSE on the Balena platform. I am now hosting the Screenly Asset editing page on a website using a simple HTML5 box. I would like to use a VNC viewer on the opposite side of this for a live preview of the screen the Raspberry Pi 4 is connected to. However, I can’t seem to find a way to enable VNC on this device. Is this a possibility or is there a different route that someone can suggest?

---

<div class="post-metadata">

**Author:** ![vpetersson](https://yyz1.discourse-cdn.com/flex029/user_avatar/forums.screenly.io/vpetersson/32/8_2.png) [@vpetersson](https://forums.screenly.io/u/vpetersson)\
**Post date:** [August 6, 2021, 11:42am UTC](https://forums.screenly.io/t/screenly-ose-balena-vnc/599/2 "2021-08-06T11:42:31Z")

</div>

Take a look at [Receive Screen Output for external use](https://forums.screenly.io/t/receive-screen-output-for-external-use/462). That should help point you in the right direction with regards to VNC.

---

<div class="post-metadata">

**Author:** ![jeremythomasjulian](https://avatars.discourse-cdn.com/v4/letter/j/48db29/32.png) [@jeremythomasjulian](https://forums.screenly.io/u/jeremythomasjulian)\
**Post date:** [August 17, 2021, 9:29am UTC](https://forums.screenly.io/t/screenly-ose-balena-vnc/599/3 "2021-08-17T09:29:46Z")

</div>

I appreciate the reply. I have VNC loaded with Screenly, but I am getting a black screen. I can’t seem to get the coding right to pull the information from screenly into Vnc. I am not sure if I am pointing to the wrong display or how to fix it. I used the example here: [GitHub - balena-io-playground/balena-vnc-example: Example project on how to run a GUI application via VNC](https://github.com/balena-io-playground/balena-vnc-example)  
To be honest, I’m a little lost.

---

<div class="post-metadata">

**Author:** ![jeremythomasjulian](https://avatars.discourse-cdn.com/v4/letter/j/48db29/32.png) [@jeremythomasjulian](https://forums.screenly.io/u/jeremythomasjulian)\
**Post date:** [August 17, 2021, 10:44am UTC](https://forums.screenly.io/t/screenly-ose-balena-vnc/599/4 "2021-08-17T10:44:07Z")

</div>

Dockerfile:

```auto
FROM balenalib/%%BALENA_MACHINE_NAME%%-debian:stretch-run

RUN install_packages x11vnc \
    x11-utils \
    xvfb \
    wmctrl \
    supervisor \
    x11vnc

WORKDIR /usr/src/app

COPY . .

ADD supervisor /etc/supervisor

CMD ["bash", "start.sh"]

```

Start:

```auto
#!/bin/bash

if [-z ${VNC_PASS}]; then
  echo "STARTING VNC WITHOUT PASSWORD"
  supervisord -c /etc/supervisor/supervisord_np.conf  
else
  echo "STARTING VNC WITH PASSWORD"
  supervisord -c /etc/supervisor/supervisord.conf
fi

```

Supervisor App:

```auto
[program:x11vnc]
environment=DISPLAY=:1
command=x11vnc

```

Supervisornp:

```auto
[supervisord]
nodaemon=true

[program:xvfb]
command=Xvfb :1 -screen 0 1280x720x24

[program:x11vnc]
command=x11vnc -shared -display :1 -oa /var/log/x11vnc.log
autostart=true
autorestart=true
startretries=10

[include]
files = /etc/supervisor/app.conf

```

Docker-compose

```auto
version: "2"
services:
  vnc-app:
    restart: always
    build: ./vnc-app
    ports:
      - "8080:5900"
  srly-ose-server:
    image: screenly/srly-ose-server
    build:
      context: .
      dockerfile: docker/Dockerfile.server
    environment:
      - HOME=/data
      - LISTEN=0.0.0.0
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    devices:
      - "/dev/vchiq:/dev/vchiq"
    restart: always
    volumes:
      - resin-data:/data
    labels:
      io.balena.features.supervisor-api: '1'

  srly-ose-viewer:
    image: screenly/srly-ose-viewer
    build:
      context: .
      dockerfile: docker/Dockerfile.viewer
    depends_on:
      - srly-ose-server
    environment:
      - HOME=/data
      - PORT=80
      - NOREFRESH=1
      - LISTEN=srly-ose-nginx
    privileged: true
    restart: always
    volumes:
      - resin-data:/data

  srly-ose-websocket:
    image: screenly/srly-ose-websocket
    build:
      context: .
      dockerfile: docker/Dockerfile.websocket
    depends_on:
      - srly-ose-server
    environment:
      - HOME=/data
      - LISTEN=0.0.0.0
    restart: always
    volumes:
      - resin-data:/data

  srly-ose-celery:
    image: screenly/srly-ose-celery
    build:
      context: .
      dockerfile: docker/Dockerfile.celery
    depends_on:
      - srly-ose-server
      - redis
    environment:
      - HOME=/data
      - CELERY_BROKER_URL=redis://redis:6379/0
      - CELERY_RESULT_BACKEND=redis://redis:6379/0
    devices:
      - "/dev/vchiq:/dev/vchiq"
    restart: always
    volumes:
      - resin-data:/data

  redis:
    image: screenly/srly-ose-redis
    build:
      context: .
      dockerfile: docker/Dockerfile.redis
    ports:
      - 127.0.0.1:6379:6379
    restart: always
    volumes:
      - redis-data:/var/lib/redis

  srly-ose-nginx:
    image: screenly/srly-ose-nginx
    build:
      context: .
      dockerfile: docker/Dockerfile.nginx
    ports:
      - 80:80
    environment:
      - HOME=/data
    depends_on:
      - srly-ose-server
      - srly-ose-websocket
    restart: always
    volumes:
      - resin-data:/data:ro

volumes:
    resin-data:
    redis-data:

```

Hope this helps break down the current situation.
