/PackageLock

a Package Management Solution made for learning Go and JS/TS from scratch

Primary LanguageGoGNU General Public License v3.0GPL-3.0

GitHub Actions Workflow Status GitHub Actions Workflow Status GitHub Actions Workflow Status GitHub Actions Workflow Status GitHub Actions Workflow Status

GitHub repo file or directory count

Contributors Forks Stargazers Issues MIT License


Logo

PackageLock

Leaning Project! PackageLock aims to be the distro-agnostic 🔋-included one-stop Solution for patchmanagement on linux systems.
Explore the docs (COMING SOON!) »

View Demo (COMING SOON!) · Report Bug (COMING SOON!) · Request Feature (COMING SOON)

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

I created PackageLock from the need to have a one-stop platform for package and software-management on my linux servers. I wanted to design and create a system that allowed me to create....

(back to top)

Getting Started

TODO: create getting started guide TODO: general deployment?

Prerequisites

Install docker. Thats it.

Installation

Docker Run:

sudo docker run -p 8080:8080 hilkopterbob/packagelock

Docker Compose:

  • download the docker-compose file: ~/ $: wget https://github.com/HilkopterBob/PackageLock/blob/master/docker-compose.yml

  • get the default config & rename it to config.yml:

~/ $: wget https://github.com/HilkopterBob/PackageLock/blob/master/default-config.yml
~/ $: mv default-config.yml config.yml
  • edit the config
  • run docker compose: ~/ $: docker-compose up -d

The default-config:

general:
  debug: true
  production: false
database:
  address: 127.0.0.1
  port: 8000
  username: root
  password: root
network:
  fqdn: 0.0.0.0
  port: 8080
  ssl: true
  ssl-config:
    allowselfsigned: true
    certificatepath: ./certs/testing.crt
    privatekeypath: ./certs/testing.key
    redirecthttp: true  

Usage

TODO: explain usage

(back to top)

Roadmap

  • backend-api to manage Agents & Hosts
  • frontend to visualize backend data
  • installable agent as background daemon
  • agent CLI:
    • packagelock id -> returns agent id
  • config management
  • TLS Encryption
  • Best Practice based Package Layout
  • Check Vars and Func-Names for naming convention
  • persistent storage
  • implement interfaces for external functions for easier mocking in tests
  • systemd service start/stop/enable/disable
  • copy app file (.deb/rpm/binary) via SFTP to host and start stop
  • binary self-Update
  • agent can run docker/podman containers
  • agent fetches running docker/podman containers, updates, restarts etc
  • user management & SSH keys
  • system definition in mpackagelock file for easy recovery & scaling
  • CLI-Commands to add:
    • sync now|timestamp - force sync the server with the Agents
    • logs -s (severity) info|warning|error -d (date to start) 2024-08-23-10-00-00 (date-time)
    • backup - Creates a backup from server, server config, database
    • generate certs letsencrypt - lets encrypt certs
    • generate certs letsencrypt renew - renews
    • test - runs healthchecks on server
    • test agents - runs healthchecks on agents

TODO: create Issue template: See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

Top contributors:

contrib.rocks image

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Project Link: https://github.com/HilkopterBob/PackageLock

(back to top)