Final Project Info

Created Sunday 20 March 2022

For your project, your team will work towards a documented implementation (or proof-of-concept) of any IT/Computer related task or service: The catch is; it must be "self-hosted."

Self-hosted is the most important part; let's talk about what that means. Roughly, it will likely be the kind of thing that's associated with "hosting" or "the cloud" — but unlike many of those, you have full access to the code running the project on a computer you own or control.

A short list of examples might be:
- A file synchronization service (e.g. Syncthing or Nextcloud as a Dropbox replacement)
- A music server (e.g. Funkwhale or MPD as a Spotify replacement)
- A media server (e.g. Plex or Jellyfin as a Netflix replacement)
- A voice controlled assistant (e.g. Mycroft or json2voice as a Siri/Alexa replacement)

You are by no means llmited to the choices here. Below is a large list of possible ideas.
https://github.com/awesome-selfhosted/awesome-selfhosted
https://www.reddit.com/r/selfhosted/

https://www.freedombox.org/

DOCKER:

Note, docker and other containerization technology has greatly streamlined this process. It is not *required* but will likely be the easiest way to do this.
https://medium.com/codingthesmartway-com-blog/docker-beginners-guide-part-1-images-containers-6f3507fffc98
https://thesmarthomejourney.com/2021/10/25/home-server-docker-compose/


You are likely to want to be able to show me and your friends your work directly over the internet; this can be done in a number of ways, but might be challening for beginners: Here are your options.
https://ngrok.io - or...
https://github.com/anderspitman/awesome-tunneling

Default project

FINALLY, a very good (if boring) default project, for which I have step-by-step instructions is to run a local webserver (LAMP). You can follow this.
https://soupbowl.io/2020/03/replace-lamp-with-docker-the-easy-way
Older LAMP Guide


VIDEO AND INFO FOR THE ABOVE


Here are videos and the corresponding links for getting Docker and your project going.

Part 1 is here (again, go ahead and just *stop* at about the 30 min mark, and then do the below)
https://us.bbcollab.com/recording/c6e8ff860f2c4a0e95a6ee12198bc8fe

Part 2
https://us.bbcollab.com/recording/d16c81e7f0f1435eb17c18f389348b2f
(there's some not entirely unexpected, but loud, music in there at times, watch your volume)

Links:
https://soupbowl.io/2020/03/replace-lamp-with-docker-the-easy-way
https://ngrok.com/
https://hub.docker.com/r/linuxserver/mstream


DELIVERABLE

What you will deliver to me is documentation and proof of effort. Text only is sufficient, but I anticipate that many of may find the inclusion of examples and screenshots of your work to be beneficial as well. Either way, please provide your final documentation as a pdf.

You should provide:

I. An Introduction.

The introduction should state

- what purpose your project intends to serve.
- If applicable, name the (perhaps presently more popular) technology you are intending to replace or augment).
- A short statement of scope (i.e. what are you going to do, and what you are not going to do.)
- Finally, name the technology you propose to actually use or attempt to use in the beginning, including the "machine" and the "software."
-

II. An overview

Here, expound a bit on the "state of the state.." Think the 5 "Ws"

What is it?
Why is it useful, and specifically, why might your idea be superior
Explain what (possible) paid or cloud service this might replace.
Provide other possible options and possibilities.
Who are ALL the users (e.g. will there be administrators vs regular users?)
Where will it be hosted?
When will it be active?

III. A summary of what you actually did


Self explanatory. One interesting thing that may happen is that you switch course. This is fine! Be sure to tell me all about it.
Be sure to state with specificity what worked, what didn't, why things worked out the way they did and what you might do in the future.
Ultimately, a moderately skilled user (think, e.g. a fellow IT student not in this class) should be able to read along, understand, and perhaps follow and/or replicate (or improve on) your team's effort.


IV. Conclusions

How did it go? Consider how this space may change in the future
or other "multimedia" document) providing complete explanation and documentation of what you did.