Skip to content

Install 9Hits Viewer#

This page shows how to install Viewer on Windows, Linux or Docker. Every method needs an access key: a 32-character hex string from your profile page.

Windows#

Requires Windows 10 or Windows Server 2012 R2 or later (64-bit), a 2GHz CPU and at least 2GB of RAM.

  1. Sign in to the dashboard and download the Windows version at https://dash.9hits.com/apps/downloads.
  2. Extract it to a folder, then run the nhviewer file inside it.
  3. Click the Settings button (gear icon), paste your access key into the Access Key field and click Save. Viewer remembers the key for next time.

Linux#

On Linux with a desktop, Viewer runs and works exactly like the Windows version. On a server or VPS without a display, use the background install script.

Requires 64-bit Linux (x86_64): Ubuntu 20.04+, Debian 11+, Fedora 36+, CentOS Stream, RHEL, Rocky or AlmaLinux 9+ (Ubuntu 22.04 or Debian 12 recommended).

Linux with a desktop#

  1. Install the libraries Viewer needs. Desktop systems usually have almost all of them already; run the command below to be sure:

    sudo apt-get update
    sudo apt-get install -y wget bzip2 libnss3 libgtk-3-0 libgbm-dev libxss1 libxtst6 \
      libatspi2.0-0 libatomic1 libcanberra-gtk-module
    
    sudo yum install -y wget bzip2 gtk3 libgbm libXScrnSaver libxkbcommon-x11 atk \
      alsa-lib cups-libs libatomic
    
  2. Download the Linux version at https://dash.9hits.com/apps/downloads, extract it into a folder you can write to, then run nhviewer from that folder:

    mkdir -p ~/9hits
    tar -xjf <downloaded file>.tar.bz2 -C ~/9hits --strip-components=1
    cd ~/9hits && ./nhviewer
    
  3. Click the Settings button, paste your access key into the Access Key field and click Save, the same as on Windows.

To have the sessions start as soon as Viewer opens, launch it with ./nhviewer --auto-start. Add this command to your desktop's startup applications if you want Viewer to run every time you log in.

Headless servers#

On a VPS or a server without a desktop, the script below installs Viewer to run in the background under systemd. Run the following command, replacing <key> with your access key and adding options if needed:

curl -sSLk https://9hitste.github.io/install/v6/install.sh | sudo bash -s -- --access-key=<key> [options]
  • The script needs systemd and root privileges. On a machine without systemd, use Docker.
  • Viewer is installed to /opt/9hits (change it with --install-dir) and restarts by itself after a crash and when the machine reboots.
  • On the first run, the script installs the required system packages itself; add --skip-install-deps to skip this.
  • To change the configuration, run the command again with the new options. Add --clear-all-sessions to delete the old sessions instead of adding to them.
screen -r 9hits                            # view the live status table
journalctl -u 9hits -f                     # view logs (when the machine has no screen)
systemctl status 9hits                     # service status
systemctl restart 9hits                    # restart
systemctl disable --now 9hits 9hits-xvfb   # stop for good, no automatic restart

Docker#

If the machine already has Docker, this is the fastest way:

docker run -dit --network=host --shm-size=2g --name=9hits 9hitste/appv6 /nh.sh --access-key=<key> [options]

-dit runs in the background, -it keeps the terminal attached. The container restarts Viewer by itself when it crashes.

A TTY is required

Always use -it or -dit. Without a TTY (just -d), the container exits immediately and keeps restarting, and Viewer cannot run.

docker attach 9hits      # view the status table; detach with Ctrl+P then Ctrl+Q so the container keeps running
docker logs -f 9hits     # view logs

Options#

The Linux script and the Docker command accept the same options below, except where noted. yes/no options default to yes, except --hide-browser, which defaults to no.

Option Meaning
--access-key Access key (required)
--note Machine name, shown on the Remote control page
--allow-popups, --allow-adult, --allow-crypto yes/no: accept campaigns with popups, adult content, crypto mining
--hide-browser yes/no: hide the browser window
--system-session Create one session that uses the machine's real IP
--ex-proxy-sessions + --ex-proxy-url Number of sessions that get proxies from a proxy pool, and the pool URL (leave empty to use 9Hits proxies)
--bulk-add-proxy-list + --bulk-add-proxy-type One session per proxy. The list is "server:port;user;pass|server:port;user2;pass2", the type is http, socks4, socks5 or ssh
--session-note Note for every session created in this run
--clear-all-sessions Delete all old sessions before applying the new configuration
--cache-limit Disk cache limit (bytes), for example 104857600 (100MB); 0 turns the cache off
--reset-interval Restart Viewer on a schedule, for example 6h. Leave empty to restart only after a crash
--install-vnc (Linux), --vnc (Docker) Turn on VNC to watch the browser screen with a VNC client, default port 5901 (change it with --vnc-port)
--vnc-pw VNC password; leave empty to generate one and print it to the terminal. On Docker, setting --vnc-pw turns VNC on
--create-swap (Linux) Create swap, for example --create-swap=10G, to help low-RAM machines run more stably

Run multiple sessions#

Each IP can carry only one session: a second session on the same IP is reported as a duplicate, so running more Viewers on the same IP does not earn more points. To run several sessions, give each session its own proxy; see Managing sessions.