# My standard configuration files for Debian and basic services This is a collection of several configuration files that I use when setting up a BASIC bare-bones Debian system. Quite often, such a system will become something else like a webserver, git-server, cloud platform, programming workstation, etc. Therefore, only a few core files applicable to nearly every conceivable installation are included here. This archive and included script are meant to supplement my article on setting up a Debian base-system found at my blog: [My Techie-Thoughts](https://mytechiethoughts.com/setting-up-a-debian-base-system/) ## Included files Please refer to the `readme.md` in each subdirectory for a list and description of each included file. Presently, configurations are included for: - BASH profiles (including aliases and custom prompt) - SSHd (OpenSSH server) - timesyncd (systemd-timesyncd configuration) ## The script file (customize.sh) The included script file copies all the files in this archive to the proper locations on a **default** Debian Stretch system. It makes backups of your existing files in-place with the extension *.original*. This simply saves you time and possible errors copying the files manually. The structure of this archive exactly mirrors a default Debian installation, so you can use that as a guide if you choose not to use the script. ### Running the script Please note you must either make the script executable or call it explicitly via BASH. In the latter case, you'd run the script as follows: ```bash /bin/bash ./customize.sh ``` If you want to make the script executable: ```bash chmod +x customize.sh ./customize.sh ``` Due to location of the files being replaced, **you MUST run this script as ROOT** (the script will exit if you run as a different user) or run it via sudo like this (assuming you made it executable): ```bash sudo ./customize.sh ``` ### Passing a custom path to the script If you want to test out the script before having it update your actual system configuration, you can supply an alternate destination path. This is referred to as a 'Base Path' by the script and it will show a warning if this option is used. Please note, your 'Base Path' MUST have the same directory structure as an actual system. The expected directories must already exist or the script will just throw errors and not actually copy files. Let's assume you wanted to test the script and copy files to */testdir*. You would do the following to prepare the directory with the expected structure: ```bash mkdir -p /testdir/root mkdir -p /testdir/etc/{skel,ssh,systemd} ``` Then you could invoke the script as follows (assuming you made it executable as described above): ```bash ./customize.sh /testdir ``` The script would then copy all files into */testdir* while mirroring the structure of a live system beneath that. Again, this is useful only for testing and will NOT update your actual system! ## Final thoughts Hopefully this saves you some time and helps you standardize your new system setups with a few useful defaults. As always, if you have suggestions or want to leave feedback for me, please do so on my [blog post](https://mytechiethoughts.com/setting-up-a-debian-base-system/) related to this script!