summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2024-08-07srcnode v0.4.0HEADv0.4.0masterMalfurious1-1/+1
Signed-off-by: Malfurious <m@lfurio.us>
2024-08-07Remove obsolete docker-compose version tagMalfurious1-2/+0
Signed-off-by: Malfurious <m@lfurio.us>
2024-08-07cgit: Remove old logo alias/routeMalfurious1-1/+0
The cgit logo image is no longer used in our configuration, so serving it via the webserver is not necessary. Signed-off-by: Malfurious <m@lfurio.us>
2024-08-07cgit: Add favicon from new logo designMalfurious3-2/+2
Signed-off-by: Malfurious <m@lfurio.us>
2024-08-07Rename project to srcnodeMalfurious9-14/+14
"Normalmode" is the name of the hosted platform that this software package was constructed to power. To better distinguish between the two and to give this project more of a standalone identity, it is rebranded with a new name. Signed-off-by: Malfurious <m@lfurio.us>
2024-03-12normalmode v0.3.0v0.3.0Malfurious1-1/+1
Signed-off-by: Malfurious <m@lfurio.us>
2024-03-12cgit: Display version numbers in cgit page footerMalfurious3-3/+8
Signed-off-by: Malfurious <m@lfurio.us>
2024-03-12cgit: Add robots.txt routeMalfurious1-0/+1
cgit does include a robots.txt file, but the previous server configuration did not allow it to be served. Signed-off-by: Malfurious <m@lfurio.us>
2024-03-12cgit: Add custom logoMalfurious4-1/+9
Signed-off-by: Malfurious <m@lfurio.us>
2024-03-11gitolite: Force blank description for newly created repositoriesMalfurious2-0/+10
A gitolite POST_CREATE trigger is added to initialize the description file in new repos. This prevents the "Unnamed repository; edit this file ..." string from being used by default. This affects new repositories, existing projects will remain as is. Signed-off-by: Malfurious <m@lfurio.us>
2024-03-11Remove gitignoreMalfurious1-1/+0
It used to be expected to copy a pubkey file into the git tree for building the docker images (every time). This is no longer the case, and I feel no need to keep this ignore file around. Signed-off-by: Malfurious <m@lfurio.us>
2024-03-11gitolite: Fix bug in post git trigger branch detectionMalfurious1-1/+1
The previous version fails to handle nested branch names containing slashes. For example, if pushing a single new branch named `feat/example`, the script would set HEAD to `feat` and remain dangling. Signed-off-by: Malfurious <m@lfurio.us>
2024-03-11gitolite: Create separate config for normalmode repository semanticsMalfurious2-10/+12
The previous content of gitolite.conf defined the standard access rules for normalmode. These are now moved to a new file which will be baked into the gitolite docker image and not managed by the gitolite-admin repository. This will allow for easier management of the normalmode rules via this git repository (aka, part of the normalmode distribution) and prevent the need for user intervention and to stomp on gitolite-admin to adopt new updates. The goal is to give users nearly complete ownership of their gitolite.conf file. Added to the gitolite.conf template is a definition for a new @creators group. The normalmode rules are updated to permit only users from this group to create and own new wildcard repositories. This allows creating new users which can only contribute to other's repos (as either a MAINTAINER or CONTRIBUTOR), or access private repos. As alluded by the previous paragraph, administrators may define private repos within gitolite using normalmode. This is done by manually configuring them in gitolite.conf. This use-case has always been possible, but has only recently been tested to confirm that the access restrictions are compatible with the rest of normalmode's operations. (aka: Nothing is leaked via cgit, and the normalmode access rules don't break anything). Easing this use-case is another reason for the clean separation of config files. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16gitolite: Prevent repo auto-creation on clone/fetchv0.2.0Malfurious1-1/+1
I'm considering this default behavior as a bug for normalmode. The creation of a repository via a read activity seems far too accidental for my taste. Repositories are created by pushing to them. This does mean that: git clone <new-url> ... git push is no longer a shorthand for: git init git remote add origin <new-url> ... git push I'm ok with that. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16gitolite: Fix bug in default branch push triggerMalfurious1-2/+1
Since it is now allowed to remove the remote default branch, this script needs to handle cases where there are no branches following a push. In this case, the `git symbolic-ref` command will fail, and we return our standard warning for when HEAD is dangling. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16Add host script for initial configuration flowMalfurious2-1/+27
The new installation procedure is to start with ./configure to set your pubkey up for admin access. The initialize script is updated to use an active prompt, since as-is, CTRL-C won't properly terminate the script to cancel. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16Update docker-compose.yml for new container definitionsMalfurious1-8/+4
Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16Merge branch 'cgit-alpine-port'Malfurious5-27/+23
Port the cgit docker image to build from Alpine Linux, and finish the file tree clean up started by the previous merge. * cgit-alpine-port: cgit: Update SSH clone URLs cgit: Update scan-path / repository mount location cgit: Update user and file paths for alpine distro cgit: Port Dockerfile for alpine base cgit: Consolidate config files into a single directory
2023-09-16cgit: Update SSH clone URLsMalfurious1-1/+1
The username used to access gitolite has changed from 'gitolite' to 'git'. Reflect this in the cgit UI. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16cgit: Update scan-path / repository mount locationMalfurious1-1/+1
Since the data volume now only contains git repositories, rather than the whole gitolite host home directory, there is no need to mount to a nested path. Anticipate moving the mount point, and change the cgit scan path to /repositories. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16cgit: Update user and file paths for alpine distroMalfurious1-9/+9
Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16cgit: Port Dockerfile for alpine baseMalfurious2-16/+12
Move the cgit image off of archlinux for the same reasons as gitolite. However, in this case, debian isn't necessary, and going with alpine will give even smaller images. As is, it seems simpler to port the config files over to alpine anyway. See 90858ead45f6 for more context. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-16cgit: Consolidate config files into a single directoryMalfurious3-0/+0
Continue cleaning the folder structure from the previous merge. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-15Merge branch 'gitolite-debian-refactor'Malfurious10-34/+87
Refactor the gitolite docker image to build from Debian, but also clean up a lot of the original build process. The move off of archlinux is done since it is a sub-optimal pick for a docker base. However, I'm specifically moving off it because archlinux does not allow for the use of normalmode on i386 machines. Most offical bases do, and debian seems to be a good fit for running gitolite. Previously, this git repository was serving double duty as the code repository for normalmode, as well as the site gitolite-admin repository. This is no longer going to be the case - gitolite-admin is now completely separate. Not only does this allow me to clean up the folder structure, but going forward, the out-of-the-box experience of a new install will be 'more correct' for what normalmode intends. IE: Our config files will more often already be installed by default, instead of requiring user-intervention on the gitolite-admin side of things. The docker-compose.yml file is left behind. I'll update it after cgit gets a similar treatment. * gitolite-debian-refactor: gitolite: Add admin initialization script gitolite: Allow users to delete remote HEAD branches gitolite: Remove hard-coded admin username gitolite: Correct site-local code location gitolite: Refactor Dockerfile for debian base gitolite: Consolidate config files into a single directory
2023-09-15gitolite: Add admin initialization scriptMalfurious2-1/+17
Per docker image changes, this serves as an alternative entrypoint for performing initial pubkey configuration. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-15gitolite: Allow users to delete remote HEAD branchesMalfurious1-0/+2
This allows the branch considered the repo default to be deleted via push. I'm not totally opposed to allowing this, even though it's not entirely necessary. However, the ability to do this is now required by the docker image entrypoint script. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-15gitolite: Remove hard-coded admin usernameMalfurious1-1/+1
The default gitolite.conf file is now patched in to the gitolite installation in the docker image. This is so that the intended version of the file is used in the gitolite-admin repo from the very beginning. This is made necessary by the decoupling of repo purposes. Instead of using (literal) 'admin', '%ADMIN' will be substituted with the actual admin username during `gitolite setup`. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-15gitolite: Correct site-local code locationMalfurious1-2/+2
Per the previous commit, site-local code is now to be located directly in the git user's home directory, as static content in the docker image. Correct this setting in the RC file. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-15gitolite: Refactor Dockerfile for debian baseMalfurious4-31/+66
Building from debian:latest will make for a smaller image, a faster build, and will make the image more accessible to a wider variety of platforms. The effort started by 19e7dc8932c is expanded upon such that the image cleanly bakes in all static config files into the image - ie. the entire hosting user's home directory, except for the repositories directory. This removal of config management from the gitolite-admin repo is part of the reason why it is being decoupled from this repo. The gitolite image will now never utilize a user pubkey during build. Instead, it can be invoked with an alternative entrypoint to interactively configure a new install. Signed-off-by: Malfurious <m@lfurio.us>
2023-09-15gitolite: Consolidate config files into a single directoryMalfurious5-0/+0
The repository is being reworked to decouple its roles as normalmode source and gitolite-admin config. The gitolite-admin repository will be entirely separate. So there is no need to keep the conf or local directories around where they are at. Signed-off-by: Malfurious <m@lfurio.us>
2023-08-12Configure via docker-composev0.1.1Malfurious1-0/+34
Signed-off-by: Malfurious <m@lfurio.us>
2023-08-12gitolite: Make admin pubkey an optional input to Docker imageMalfurious2-9/+9
Automating the build of this image will be awkward if we need a user-supplied input file each time. At best, it will probably lead to building out of per-instance configuration branches that store the file... The initial administrator pubkey is only really needed to include in the first image that is run at any given site, since a new install doesn't have a config/repository datastore yet. Once that is the case, the procedure in the Dockerfile to init the /var/lib/gitolite directory (now refactored to a shell script file) can be skipped, since that directory will be replaced by the previous container's volume. This is probably not the final form of this kind of build design change, but will work for now to get up and running easily with cychedelic. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-18cgit: Show proper idle times on the index pagev0.1Malfurious2-1/+4
By default, the idle times shown by cgit only reflect the most recent push to the master branch - and that is the time of the push, not of the actual commit. This patch causes the age/timestamp to be set by pushes to any branch. The times will reflect the age of the youngest commit on any branch or tag. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-18gitolite: Set default branch on first pushMalfurious2-1/+21
The non-core feature 'symbolic-ref' that ships with gitolite opens a bigger hole than I would intend to (in the form of allowing arbitrary git-symbolic-ref commands to be executed). As an alternative, a post-git gitolite trigger is added. Its only purpose at the moment is to check on the state of HEAD following any pushes. Under normal circumstances, HEAD will point to a valid branch, or on a first push, the master branch will be provided, validating HEAD. If after the first push, there is no branch called master, we assume the creator wishes to use another name for the default branch, and so will update the ref if doing so is unambiguous (there is only one other branch). If multiple non-master branches are present in this case, a warning is issued, and HEAD is left invalid, awaiting a later push to master. This _should_ only be an issue for the first push. Once HEAD refers to a valid branch (of any name), this action is bypassed going forward. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-16cgit: Fix ssh clone urlMalfurious1-1/+1
Although user@server:path would be the preferred URL form, cgit interprets this as an HTTP link, relative to the repository base URL. That is, even though the desired text appears on screen, the text's link is broken. Someone copying the link, as opposed to copying the text, to use with an actual clone (or git-remote add) will have a bad time. Using a full URL with the ssh:// protocol scheme solves this problem. '.git' is omitted from the end of the path for consistency with the HTTP url (it's use is optional for ssh protocol). Signed-off-by: Malfurious <m@lfurio.us>
2022-08-16gitolite: Override default sshd_configMalfurious2-2/+26
Provide a config file for the back-end SSH daemon. Primarily, this explicitly disables root login, password auth, and additional unnecessary frills. Additionally, the sftp subsystem is omitted. Now that this file is added, hostkey files (and the external volume containing them) are moved to a new dedicated location (/hostkeys/...). This allows us to bake sshd_config into the built gitolite image, instead of it also living in the external volume. This makes it easier for future changes to be incorporated by simply updating the image. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-13Add port expose directives to DockerfilesMalfurious2-0/+2
This is useful as documentation to the user, but can be necessary to work with some docker-compose setups. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-07cgit: Configure cgit for normalmode useMalfurious1-6/+20
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-07gitolite: Save repository owner for front-endMalfurious2-1/+3
cgit is unable to resolve the owner of repositories, since they are all owned by the same unix user account. By adopting this gitweb-specific config key, we can communicate the end-user name via git-config. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-07Add cgit docker imageMalfurious3-0/+73
Apache webserver (httpd) is setup minimally to host cgit on a website (sub)domain root. cgitrc config file is based on that from my previous installation, in my personal website. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-06Fix datastore permissionsMalfurious2-1/+3
For compatibility with the front-end docker image, ensure git repositories (and their parent directories) have mode 0755, aka: go+rx. Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Allow users to create wildcard repositoriesMalfurious1-0/+6
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Create administrators groupMalfurious1-1/+3
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Remove testing repositoryMalfurious1-3/+0
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Add gitolite gitconfig fileMalfurious2-0/+7
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Disable the 'writable' commandMalfurious1-1/+1
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Allow users to delete wildcard repositoriesMalfurious1-1/+1
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Define custom access levelsMalfurious1-2/+2
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Replace git-daemon/gitweb presets with cgitMalfurious1-3/+3
Signed-off-by: Malfurious <m@lfurio.us>
2022-08-02Add default gitolite RC fileMalfurious2-1/+203
Signed-off-by: Malfurious <m@lfurio.us>