Thanks to visit codestin.com
Credit goes to github.com

Skip to content

KoniHD/cit-website

Repository files navigation

CIT-Website Template

This repo should serve as a template to create a short profile page for CIT students at TUM

Project repository: https://github.com/KoniHD/cit-website

Features:

  • Standardized template
  • Easily add personal information
  • Automatic deployment from github

Motivation

Other universities such as CMU or Stanford have cool institutional profile pages to improve visibility (links: CMU, Stanford).
That's why this template is meant to make profile publishing easier for CIT students to obtain a similar personal academic webpages.

Usage

  1. Fill in your personal information in ['profile.yml'](profile.yml).
  2. Replace ['photo.webp'](photo.webp) with your own image.
  3. Validate your profile locally with npm run validate (recommended).
  4. Copy the files on lxhalle and follow the instructions on the wiki to make your site public.
  5. Ensure you set file permission correctly (see CIT permission tree view)
  6. (Optional): Add SEO meta tags for site ownership verification to ['profile.yml'](profile.yml)
  7. (Optional): Setup IndexNow notifications for search engines.
  8. (Optional): Set up Github Action Workflow for automatic deployment
  9. (Optional): Add a German translations of your site.

CIT Permission Setup (Tree View)

Make sure your files on lxhalle have the following minimum permissions:

/u/halle/<login>/                                directory: o+x
`-- home_at/                                     directory: o+x
	`-- home_page/                               directory: o+x
		`-- html-data/                           directory: o+rx
			|-- index.html                       file: o+r
			|-- de/                              directory: o+rx
			|   `-- index.html                  file: o+r
			|-- profile.yml                      file: o+r
			|-- photo.webp                       file: o+r
			|-- robots.txt                       file: o+r
			|-- sitemap.xml                      file: o+r
			|-- site.webmanifest                 file: o+r
			|-- styles/                          directory: o+rx
			|   `-- main.css                     file: o+r
			`-- icons/                           directory: o+rx
				`-- favicon/                     directory: o+rx
					|-- favicon.ico              file: o+r
					|-- favicon.svg              file: o+r
					|-- favicon-96x96.webp       file: o+r
					`-- apple-touch-icon.webp    file: o+r

(Optional) Set SEO Meta tags

Configure verification tokens in [profile.yml:40](profile.yml#L40) under searchEngineVerification. The build script maps these values into <meta> tags in both generated pages.

searchEngineVerification:
  google: "YOUR_TOKEN"
  bing: "YOUR_TOKEN"
  yandex: "YOUR_TOKE"
  baidu: "YOUR_TOKE"
  naver: "YOUR_TOKEN"
  seznam: "YOUR_TOKEN"
  pinterest: "YOUR_TOKEN"

Note that some engines might not work if they only allow top-level verification.

(Optional) IndexNow Notification

You can notify IndexNow after each successful deployment using [.github/workflows/indexnow.yml](.github/workflows/indexnow.yml).

How it works:

  1. Visit bing.com/indexnow and copy the randomly generated IndexNow key.
  2. Paste your key in [IndexNowKey.txt](IndexNowKey.txt) at repository root (this file is public by design).
  3. Deploy workflow uploads this file to your site.
  4. IndexNow workflow reads your live sitemap.xml, builds a JSON payload, and submits URL updates to https://api.indexnow.org/indexnow.

This helps participating engines discover updates faster, but does not guarantee indexing. Read more in the documentation.

(Optional) GitHub Actions Deploy Setup

1. Create a dedicated deploy key pair

Create a dedicated SSH key that is only used by GitHub Actions.

ssh-keygen -t ed25519 -f ~/.ssh/cit_deploy_key -C "github-actions-deploy"

2. Add strict restrictions in authorized_keys

On the lxhalle server, append the public key with restrictions to ~/.ssh/authorized_keys:

restrict,command="/usr/bin/rrsync -wo /u/halle/<CIT-login>/home_page/html-data" ssh-ed25519 AAAA... github-actions-deploy

Replace:

  • <CIT-login> with your CIT login
  • AAAA... with the full public key body from ~/.ssh/cit_deploy_key.pub

Why this is safe:

  • restrict disables interactive shell features (pty, forwarding, agent forwarding, X11)
  • forced command="...rrsync ..." prevents arbitrary command execution
  • -wo allows write-only sync behavior for deployment
  • path argument confines writes to your site directory

Also enforce SSH file permissions on server:

3. Add GitHub Environment and secrets

In repo settings on GitHub:

  1. Create environment deployment.
  2. Add environment secret DEPLOY_SSH_KEY with the full private key content.
  3. Add environment secret DEPLOY_USER with your CIT-login (for example muster).

4. Edit deployment workflow to point to your website

At the top in ['deploy-rsync.yml'](.github/workflows/deploy-rsync.yml) replay 'CIT-login' with your credentials to point the workflow to your site upon successfull completion.

(Optional): German Translation

The build pipeline can render a bilingual site:

  • English at /
  • German at /de/

Use translations.de in [profile.yml](profile.yml). Any missing German field falls back to the English top-level value. The static German page lives in [de/index.html](de/index.html) (UI labels); profile data still comes from YAML.

translations:
  de:
    role: "M.Sc. Student · Computational Science and Engineering"
    description: "M.Sc.-Student an der TUM School of Computation, Information and Technology."
    position: "Masterstudent"
    affiliationTitle: "Tutor · Parallel Programming"
    bio: "Bio folgt in Kürze."

Disclaimer

This project is an independent student template and is not officially affiliated with, endorsed by, or representing Technical University of Munich (TUM).

All trademarks, logos, and brand names are the property of their respective owners and are used here only for identification/reference purposes.
No copyright or trademark infringement is intended.

The colors used in this template were selected based on an unofficial reference gist.

If you are a rights holder and believe any material (including color usage, branding, or other assets) is inappropriate, please contact me directly at [[email protected]] and I will review and remove/adjust the content promptly.

To the maximum extent permitted by applicable law, this template is provided "as is", without warranties, and I do not accept liability for third-party use, modifications, deployments, outages, data loss, or security incidents arising from use of this repository.

This limitation of liability explicitly includes use, misconfiguration, or abuse of the included GitHub Actions workflow, SSH keys, deployment scripts, and any related automation.

Security improvements are always welcome! If you identify a weakness or have a hardening suggestion, please open an issue or pull request so it can be reviewed and improved for everyone.

Original template by Konstantin Zeck.

Contributors