# vlSee Server — Ubuntu preview

Release status: source package prepared for review. Public distribution is pending.
This guide is available separately; it is not an installer by itself.

vlSee serves the folders you already have. The computer with vlSee Server does
all encoding. Local and SMB sources stay on your computers. For remote access,
use your own Tailscale account or another private VPN. vlSee operates no relay.
There is no vlSee account or signup: the server issues device access codes.

## Already installed on this computer?

Open **vlSee Server** from Ubuntu Applications. The launcher starts the background
service if needed, then opens its dashboard. Right-click the application for
**Check server status** or **Show owner access code**.

The default local dashboard is http://127.0.0.1:8083/#server (on the server itself).
The owner code is in `next/.state/web-preview/access-code` in the installation.
Never enter that permanent owner code on a public website. On the server, open
Devices and create a one-time viewing or management code for another device.

If the launcher is missing, these commands apply to an existing preview install:

```sh
systemctl --user start vlsee-web-preview.service
systemctl --user status vlsee-web-preview.service
```

A website cannot start an uninstalled server. The "Open installed server" button
uses the local application installed during setup, with your browser's approval.
No server software, status, or owner code is available to vlsee.org automatically.

## New installation from an approved source package

Supported target: Ubuntu 24.04 with Python 3.12+, systemd user services, and a
logged-in desktop account. Native Windows/macOS installers and iOS/tvOS apps
are not released. Windows and NAS machines can already supply SMB shares.

1. Download the release and its SHA-256 checksum from the same release page.
   Verify the checksum, then extract it somewhere permanent in your home folder.
   Do not move that folder after installing. A checksum detects corruption; it
   is not an independent signature or security audit.
2. Install prerequisites from Ubuntu's package repositories:

   ```sh
   sudo apt update
   sudo apt install python3-venv ffmpeg python3-gi gvfs-backends gvfs-fuse libsmbclient zenity xdg-utils
   ```

3. From the extracted release folder, choose an existing video directory:

   ```sh
   python3 next/scripts/setup_server.py --library "$HOME/Videos" --name "My server"
   ```

   Setup installs pinned Python dependencies from PyPI into a private virtual
   environment, writes local configuration, installs the Ubuntu application,
   and starts `vlsee-web-preview.service`. It never runs sudo itself, modifies
   your video files, opens router ports, or configures a VPN. Existing installs
   are refused rather than overwritten. Internet is needed to install packages.

4. Open vlSee Server, retrieve the owner code from its application action, sign
   in locally, and add any additional folders or SMB shares in Libraries.
5. To start at boot before desktop login (optional):

   ```sh
   sudo loginctl enable-linger "$USER"
   ```

## Local network only

By default the server listens only on 127.0.0.1. If you deliberately want other
computers on a trusted LAN to reach it over HTTP, supply the server's current
private IPv4 address during initial setup:

```sh
python3 next/scripts/setup_server.py --library "$HOME/Videos" --lan-address 192.168.1.50
```

Replace that example address with the server's actual address. Open its own page
at `http://YOUR-LAN-IP:8083`; the hosted website requires HTTPS. LAN HTTP does not
encrypt credentials or video on the network. Restrict access to your trusted LAN;
no firewall rules or router port forwarding are changed automatically. Reserve
that address in your router so it stays stable.

## Private HTTPS and remote viewing

Tailscale is recommended, not bundled or operated by vlSee. Install it from
https://tailscale.com/download on the server and viewing devices. Use your own
account and network; do not join a shared vlSee network. Apple TV support:
https://tailscale.com/docs/install/appletv . Provider plan terms apply.

Once Tailscale is connected, this runs a private HTTPS proxy to the local server:

```sh
sudo tailscale serve --bg --https=443 http://127.0.0.1:8083
```

Follow Tailscale's prompts to enable HTTPS if needed. This is Serve, not public
Funnel. Note the private HTTPS address it prints. During a fresh vlSee install,
pass that address with `--public-url https://YOUR-SERVER.YOUR-TAILNET.ts.net`.

For an existing install, add that exact hostname to `allowed_hosts` in
`next/config.json`, then run:

```sh
python3 next/scripts/install_web_service.py --public-url https://YOUR-SERVER.YOUR-TAILNET.ts.net --server-name "My server"
```

This enables the unit but does not restart an existing process. After active
playback has finished, run `systemctl --user restart vlsee-web-preview.service`.

Open the server using that HTTPS address, create a device code in Devices, and
open the pairing link or scan the QR code on the viewing device. It includes the
address, so you do not have to type it. A code alone cannot locate a private
server. Remembered devices store credentials in that browser. Management access
allows library and device changes; viewing access does not.

Other VPNs work if they provide a route to your server. To use vlsee.org, you also
need a browser-trusted HTTPS endpoint and the website in `frontend_origins`.
Alternatively, use the server's own interface. Keep playback traffic entirely
on your own chosen connection. Your ISP/mobile data limits still apply.

## Windows shares and restart recovery

In Libraries, add an SMB location and test its credentials. Select **Save this
login for automatic reconnection** if it should survive restarts. Credentials
are permission-protected on the server, not encrypted at rest. An unsaved desktop
mount may disappear after reboot; that does not remove its library registration.

## Operation, updates and uninstall

The server runs independently of the website and the application launcher:

```sh
systemctl --user status vlsee-web-preview.service
journalctl --user -u vlsee-web-preview.service -n 50
systemctl --user stop vlsee-web-preview.service
```

Back up the private `next/config.json` and `next/.state/web-preview` securely.
They contain owner/device credentials, SMB logins and library registrations.
Never publish them. To upgrade, stop active playback and follow release-specific
migration instructions; do not run the fresh installer over an existing state.
No automatic updating or public remote-administration service is installed.

To uninstall, stop and disable `vlsee-web-preview.service`, remove its user unit
and the org.vlsee.Server.desktop launcher, and run `systemctl --user daemon-reload`.
Then remove only the extracted application folder when you no longer need its
private state. Original video folders are separate and must not be deleted.

## Limits

Early preview: one encoder at a time; CPU performance affects buffering. Browser
output is H.264/AAC HLS at a selected bitrate, with estimated rather than exact
mobile data usage. Some HDR and unencrypted Blu-ray layouts work; no guarantee
covers every codec/disc. Native TV apps, subtitles and universal format support
are not claimed. Keep your server awake and retain independent backups.
