ahriman/README.md
Evgenii Alekseev e63cb509f2
Auth support (#25)
* initial auth implementation

* add create user parser

* add tests

* update dependencies list

* add login annd logout to index also improve auth

* realworld fixes

* add method set_option to Configuration and also use it everywhere
* split CreateUser handler to additional read method
* check user duplicate on auth mapping read
* generate salt by using passlib instead of random.choice
* case-insensetive usernames
* update dependencies
* update configuration reference
* improve tests

* fix codefactor errors

* hide fields if authorization is enabled, but no auth supplied

* add settings object for auth provider

* readme update
2021-09-02 23:36:00 +03:00

3.2 KiB

ArcHlinux ReposItory MANager

build status CodeFactor

Wrapper for managing custom repository inspired by repo-scripts.

Features

  • Install-configure-forget manager for own repository.
  • Multi-architecture support.
  • VCS packages support.
  • Sign support with gpg (repository, package, per package settings).
  • Synchronization to remote services (rsync, s3) and report generation (html).
  • Dependency manager.
  • Repository status interface with optional authorization.

Installation and run

  • Install package as usual.

  • Change settings if required, see CONFIGURING for more details.

  • Create /var/lib/ahriman/.makepkg.conf with makepkg.conf overrides if required (at least you might want to set PACKAGER):

    echo 'PACKAGER="John Doe <john@doe.com>"' | sudo -u ahriman tee -a /var/lib/ahriman/.makepkg.conf
    
  • Configure build tools (it is required for correct dependency management system):

    • create build command, e.g. ln -s /usr/bin/archbuild /usr/local/bin/ahriman-x86_64-build (you can choose any name for command, basically it should be {name}-{arch}-build);
    • create configuration file, e.g. cp /usr/share/devtools/pacman-{extra,ahriman}.conf (same as previous pacman-{name}.conf);
    • change configuration file, add your own repository, add multilib repository etc;
    • set build_command option to point to your command;
    • configure /etc/sudoers.d/ahriman to allow running command without a password.
    ln -s /usr/bin/archbuild /usr/local/bin/ahriman-x86_64-build
    cp /usr/share/devtools/pacman-{extra,ahriman}.conf
    
    echo '[multilib]' | tee -a /usr/share/devtools/pacman-ahriman.conf
    echo 'Include = /etc/pacman.d/mirrorlist' | tee -a /usr/share/devtools/pacman-ahriman.conf
    
    echo '[aur-clone]' | tee -a /usr/share/devtools/pacman-ahriman.conf
    echo 'SigLevel = Optional TrustAll' | tee -a /usr/share/devtools/pacman-ahriman.conf
    echo 'Server = file:///var/lib/ahriman/repository/$arch' | tee -a /usr/share/devtools/pacman-ahriman.conf
    
    echo '[build]' | tee -a /etc/ahriman.ini.d/build.ini
    echo 'build_command = ahriman-x86_64-build' | tee -a /etc/ahriman.ini.d/build.ini
    
    echo 'Cmnd_Alias CARCHBUILD_CMD = /usr/local/bin/ahriman-x86_64-build *' | tee -a /etc/sudoers.d/ahriman
    echo 'ahriman ALL=(ALL) NOPASSWD: CARCHBUILD_CMD' | tee -a /etc/sudoers.d/ahriman
    chmod 400 /etc/sudoers.d/ahriman
    
  • Start and enable ahriman@.timer via systemctl:

    systemctl enable --now ahriman@x86_64.timer
    
  • Start and enable status page:

    systemctl enable --now ahriman-web@x86_64
    
  • Add packages by using ahriman add {package} command:

    sudo -u ahriman ahriman -a x86_64 add yay --now
    

Note that initial service configuration can be done by running ahriman setup with specific arguments.