Skip to content

📥 Installer

Installer is used to quickly install pre-compiled binaries from Github releases.

For setup apps that have are not supported by apt package manager, such as task, this method is used to install and update them. It makes it easier to install and update the apps without having to manually download them or install a another package system in the container, such as npm, pip, or homebrew.

🛠 Installation

Default Port: 3000

curl -s https://i.jpillora.com/installer! | bash

⚙ Config

Install location

/usr/local/bin/installer

/etc/systemd/system/installer.service

[Unit]
Description=Quickly install pre-compiled binaries from Github releases

[Service]
Type=simple
ExecStart=/usr/local/bin/installer
Restart=on-failure
ExecReload=/bin/kill -USR1 $MAINPID
StandardOutput=append:/var/log/installer.log
StandardError=inherit

[Install]
WantedBy=multi-user.target

📝 Usage

install user/repo from github

curl https://i.jpillora.com/<user>/<repo>@<release>! | bash

search web for github repo query

curl https://i.jpillora.com/<query>! | bash

Or you can use wget -qO- url | bash

Path API

  • user Github user (defaults to @jpillora, customisable if you host your own, searches the web to pick most relevant user when repo not found)
  • repo Github repository belonging to user (required)
  • release Github release name (defaults to the latest release)
  • ! When provided, downloads binary directly into /usr/local/bin/ (defaults to working directory)

Query Params

  • ?type= Force the return type to be one of: script or homebrew
    • type is normally detected via User-Agent header
    • type=homebrew is not working at the moment
  • ?insecure=1 Force curl/wget to skip certificate checks
  • ?as= Force the binary to be named as this parameter value

💡 Examples

Traefik

homelab/pve/traefik/conf.d/installer.yaml
---
http:
 #region routers 
  routers:
    installer:
      entryPoints:
        - "websecure"
      rule: "Host(`installer.l.nicholaswilde.io`)"
      middlewares:
        - default-headers@file
        - https-redirectscheme@file
      tls: {}
      service: installer  
#endregion
#region services
  services:
    installer:
      loadBalancer:
        servers:
          - url: "http://192.168.2.26:3000"
        passHostHeader: true
#endregion

Task List

task: Available tasks for this project:
* decrypt:       Decrypt .env using SOPS
* enable:        Enable service
* encrypt:       Encrypt .env using SOPS
* export:        Export the task list
* init:          Init
* mklinks:       Make client symlinks
* restart:       Resart service
* start:         Start service
* status:        Service status
* stop:          Stop service
* up:            Tun Docker compose in the foreground.
* up-d:          Run Docker compose in the background.
* update:        Update running containers
* upgrade:       upgrade

🔗 References