⚠️ Important Note: Jan is primarily a desktop application. This playbook provisions Jan for Linux desktop environments. For server deployments, consider using the API server or alternatives like Ollama/LocalAI.
- name: Deploy Jan Desktop
hosts: jan-desktop
become: true
vars:
jan_version: "0.7.7"
jan_download_url: "https://github.com/janhq/jan/releases/download/v{{ jan_version }}/jan-linux-amd64-{{ jan_version }}.deb"
app_user: "{{ ansible_user_id }}"
tasks:
- name: Install prerequisites (Debian/Ubuntu)
apt:
name:
- wget
- curl
- libgtk-3-0
- libwebkit2gtk-4.0-37
- libappindicator3-1
- libssl3
- libnss3
- libasound2
- libatk1.0-0
- libatk-bridge2.0-0
- libcups2
- libdrm2
- libxkbcommon0
- libxcomposite1
- libxdamage1
- libxfixes3
- libxrandr2
- libgbm1
- libpango-1.0-0
- libcairo2
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Create download directory
file:
path: "/tmp/jan-install"
state: directory
mode: "0755"
- name: Download Jan .deb package
get_url:
url: "{{ jan_download_url }}"
dest: "/tmp/jan-install/jan.deb"
mode: "0644"
become_user: "{{ app_user }}"
- name: Install Jan package
apt:
deb: "/tmp/jan-install/jan.deb"
state: present
when: ansible_os_family == "Debian"
- name: Install Jan RPM package (RHEL/Fedora)
dnf:
name: "/tmp/jan-install/jan.rpm"
state: present
when: ansible_os_family == "RedHat"
- name: Create Jan data directory
file:
path: "/home/{{ app_user }}/.config/Jan/data"
state: directory
owner: "{{ app_user }}"
group: "{{ app_user }}"
mode: "0755"
- name: Display setup instructions
debug:
msg: |
Jan has been installed!
NEXT STEPS:
1. Log in to the desktop session as {{ app_user }}
2. Launch Jan from Applications menu or run 'jan' from terminal
3. Accept terms of use on first launch
4. Download models from the Hub tab
5. Start chatting!
DATA LOCATION:
/home/{{ app_user }}/.config/Jan/data
API SERVER:
- URL: http://localhost:1337
- OpenAI-compatible API
Repository: https://github.com/janhq/jan
Documentation: https://jan.ai/docs
- name: Deploy Jan to multiple desktops
hosts: jan-desktops
become: true
vars:
jan_version: "0.7.7"
tasks:
- name: Install Jan on Debian/Ubuntu
block:
- name: Download Jan .deb package
get_url:
url: "https://github.com/janhq/jan/releases/download/v{{ jan_version }}/jan-linux-amd64-{{ jan_version }}.deb"
dest: "/tmp/jan.deb"
mode: "0644"
- name: Install Jan package
apt:
deb: "/tmp/jan.deb"
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Install Jan on RHEL/Fedora
block:
- name: Download Jan .rpm package
get_url:
url: "https://github.com/janhq/jan/releases/download/v{{ jan_version }}/jan-linux-amd64-{{ jan_version }}.rpm"
dest: "/tmp/jan.rpm"
mode: "0644"
- name: Install Jan package
dnf:
name: "/tmp/jan.rpm"
state: present
when: ansible_os_family == "RedHat"
ansible-playbook -i inventory.ini jan.yml
ansible-playbook -i inventory.ini jan.yml -e "jan_version=0.7.7"
Launch Jan:
jan from terminalFirst-Time Setup:
Configure API Server (Optional):
- name: Install Jan via Flatpak
hosts: jan-desktops
become: true
tasks:
- name: Install Flatpak
apt:
name: flatpak
state: present
when: ansible_os_family == "Debian"
- name: Add Flathub repository
command: flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
become_user: "{{ ansible_user_id }}"
- name: Install Jan
command: flatpak install -y flathub ai.jan.Jan
become_user: "{{ ansible_user_id }}"
- name: Install Jan AppImage
hosts: jan-desktops
become: false
vars:
jan_version: "0.7.7"
appimage_url: "https://github.com/janhq/jan/releases/download/v{{ jan_version }}/Jan.AppImage"
tasks:
- name: Create applications directory
file:
path: "~/Applications"
state: directory
- name: Download Jan AppImage
get_url:
url: "{{ appimage_url }}"
dest: "~/Applications/Jan.AppImage"
mode: "0755"
- name: Create desktop entry
copy:
dest: "~/.local/share/applications/jan.desktop"
mode: "0644"
content: |
[Desktop Entry]
Name=Jan
Exec=/home/{{ ansible_user_id }}/Applications/Jan.AppImage
Icon=jan
Type=Application
Categories=Utility;ArtificialIntelligence;
For headless API server usage (if needed):
- name: Configure Jan API Server
hosts: jan-desktops
become: false
tasks:
- name: Create Jan config directory
file:
path: "~/.config/Jan"
state: directory
- name: Configure API server settings
copy:
dest: "~/.config/Jan/settings.json"
mode: "0644"
content: |
{
"apiServer": {
"enabled": true,
"port": 1337,
"host": "0.0.0.0",
"cors": true,
"authentication": true
}
}
Any questions?
Feel free to contact us. Find all contact information on our contact page.