diff --git a/2400040162_M.NIKHIL/2400040162.tex b/2400040162_M.NIKHIL/2400040162.tex new file mode 100644 index 0000000..7528f6d --- /dev/null +++ b/2400040162_M.NIKHIL/2400040162.tex @@ -0,0 +1,413 @@ +\documentclass[12pt,a4paper]{article} + +% Essential packages +\usepackage[utf8]{inputenc} +\usepackage[margin=1in]{geometry} +\usepackage{graphicx} +\usepackage{xcolor} +\usepackage{listings} +\usepackage{fancyhdr} +\usepackage{titlesec} +\usepackage{enumitem} +\usepackage{hyperref} +\hypersetup{ + hidelinks +} + +% ==== THEME COLORS ==== +\definecolor{themeBlue}{HTML}{0047AB} +\definecolor{lightGray}{HTML}{F5F5F5} + +% ==== FONT CHANGE TO MODERN SANS-SERIF ==== +\renewcommand{\familydefault}{\sfdefault} +\usepackage{helvet} + +% ==== CODE BLOCK THEME ==== +\lstset{ + basicstyle=\ttfamily\small, + breaklines=true, + frame=single, + numbers=left, + numberstyle=\tiny, + backgroundcolor=\color{lightGray}, + keywordstyle=\color{themeBlue}\bfseries +} + +% ==== HEADER/FOOTER THEME ==== +\pagestyle{fancy} +\fancyhf{} +\rhead{\textcolor{themeBlue}{Open Source Report}} +\lhead{\textcolor{themeBlue}{Mandava Nikhil}} +\rfoot{\textcolor{themeBlue}{Page \thepage}} +\renewcommand{\headrulewidth}{1pt} +\renewcommand{\headrule}{\hbox to\headwidth{\color{themeBlue}\leaders\hrule height \headrulewidth\hfill}} + +% ==== SECTION STYLE ==== +\titleformat{\section} + {\Large\bfseries\color{themeBlue}} + {\thesection}{1em}{} + +\titleformat{\subsection} + {\large\bfseries\color{black}} + {\thesubsection}{1em}{} + +\titleformat{\subsubsection} + {\normalsize\bfseries\color{themeBlue}} + {\thesubsubsection}{1em}{} + +\begin{document} + +% ============ FRONT PAGE ============ +\begin{titlepage} + \centering + \vspace*{1cm} + + {\Huge\bfseries\color{themeBlue} Open Source Software Report\\[0.5cm] \par} + + \vspace{2cm} + + {\Large\bfseries Student Details\par} + \vspace{1cm} + + \begin{tabular}{ll} + \textbf{Name:} & MANDAVA NIKHIL \\[0.3cm] + \textbf{Roll Number:} & 2400040162 \\[0.3cm] + \textbf{Department:} & ELECTRONICS AND COMMUNICATION ENGINEERING \\[0.3cm] + \textbf{University:} & KL University \\[0.3cm] + \textbf{Course:} & Open Source \\[0.3cm] + \textbf{Semester:} & ODD SEMESTER\\[0.3cm] + \end{tabular} + + \vfill + + {\large Submitted to:\\[0.3cm] + \textbf{Dr. Sripath Roy}\\ + Department of Computer Science and Engineering\\ + KL University\par} + + \vspace{1cm} +\end{titlepage} + +\newpage +\tableofcontents +\newpage + +% ================================ +% 1. LINUX DISTRO +% ================================ +\section{Linux Distribution} + +\subsection{Distribution Used: Ubuntu 22.04 LTS} + +Ubuntu 22.04 LTS is a widely used Linux operating system that provides Long Term Support, stability, and security updates for 5 years, making it ideal for development and server hosting. + +\subsection{Why Ubuntu?} + +\begin{itemize} + \item \textbf{User-Friendly}: Easy to install and use + \item \textbf{Stable and Secure}: Long-term support + \item \textbf{Developer Tools}: Supports Git, Node.js, Python, GCC + \item \textbf{Server Ready}: Commonly used for cloud deployments +\end{itemize} + +\subsection{System Specifications} + +\begin{itemize} + \item OS: Ubuntu 22.04 LTS + \item Kernel: Linux 5.15 + \item Architecture: x86\_64 + \item Shell: Bash 5.1 +\end{itemize} + +\newpage + +% ================================ +% 2. ENCRYPTION AND GPG +% ================================ +\section{Encryption and GPG} + +\subsection{What is Encryption?} + +Encryption converts readable data into ciphertext so that only authorized users with the correct key can read it. + +\subsection{Types of Encryption} + +\subsubsection{Symmetric Encryption} +\begin{itemize} + \item Same key for encryption and decryption + \item Fast and efficient + \item Examples: AES, DES +\end{itemize} + +\subsubsection{Asymmetric Encryption} +\begin{itemize} + \item Uses a public and private key + \item Commonly used for secure communication + \item Example: RSA +\end{itemize} + +\subsection{What is GPG?} + +GPG (GNU Privacy Guard) is an open-source encryption tool used to: +\begin{itemize} + \item Encrypt data + \item Decrypt messages + \item Digitally sign documents +\end{itemize} + +\subsection{Installing GPG} +\begin{lstlisting}[language=bash] +sudo apt update +sudo apt install gnupg +\end{lstlisting} + +\subsection{Generating Keys} + +\begin{lstlisting}[language=bash] +gpg --full-generate-key +\end{lstlisting} + +\newpage + +% ================================ +% 3. ENCRYPTED EMAIL +% ================================ +\section{Sending Encrypted Email} + +\subsection{Why Encrypt Email?} + +Emails can be intercepted across networks. Encryption ensures privacy, integrity, and authenticity. + +\subsection{Tool Used: Mozilla Thunderbird} + +Thunderbird supports OpenPGP encryption for secure communication. + +\subsection{Steps to Send Encrypted Email} + +\begin{enumerate} + \item Install Thunderbird + \item Add email account + \item Import GPG keys + \item Enable encryption before sending +\end{enumerate} + +\newpage + +% ================================ +% 4. PRIVACY TOOLS +% ================================ +\section{Privacy Tools from Prism-Break.org} + +\subsection{1. Signal} + +\begin{itemize} + \item End-to-end encrypted messaging + \item Open source and secure +\end{itemize} + +\subsection{2. Tor Browser} + +\begin{itemize} + \item Anonymous browsing + \item Protects against tracking and surveillance +\end{itemize} + +\subsection{3. Tutanota} + +\begin{itemize} + \item Encrypted email service + \item Open-source clients +\end{itemize} + +\subsection{4. KeePassXC} + +\begin{itemize} + \item Password manager + \item Stores data locally in encrypted format +\end{itemize} + +\subsection{5. OnionShare} + +\begin{itemize} + \item Share files anonymously over Tor + \item No central server required +\end{itemize} + +\newpage + +% ================================ +% 5. OPEN SOURCE LICENSE +% ================================ +\section{Open Source License} + +\subsection{License Used: MIT License} + +The MIT License is a permissive open-source license that allows anyone to use, copy, modify, and distribute the software as long as the original license is included. + +\begin{lstlisting} +MIT License +Copyright (c) 2025 +Permission is hereby granted... +\end{lstlisting} + +\newpage + +% ================================ +% 6. SELF-HOSTED SERVER +% ================================ +\section{Self-Hosted Server: PairDrop} + +\subsection{What is PairDrop?} + +PairDrop is a peer-to-peer file sharing tool that allows devices on the same network to transfer files directly using WebRTC, without internet or user accounts. + +\subsection{Why I Selected PairDrop} + +\begin{itemize} + \item Lightweight and fast + \item No signup or cloud storage + \item Perfect for LAN file sharing +\end{itemize} + +\subsection{Installation on Ubuntu} + +\textbf{Step 1: Install Node.js and npm} +\begin{lstlisting}[language=bash] +sudo apt update +sudo apt install nodejs npm -y +\end{lstlisting} + +\textbf{Step 2: Clone Repository} +\begin{lstlisting}[language=bash] +git clone https://github.com/schlagmichdoch/PairDrop.git +cd PairDrop +\end{lstlisting} + +\textbf{Step 3: Install Dependencies} +\begin{lstlisting}[language=bash] +npm install +\end{lstlisting} + +\textbf{Step 4: Start Server} +\begin{lstlisting}[language=bash] +npm start +\end{lstlisting} + +\subsection{Accessing PairDrop} + +\begin{lstlisting} +http://localhost:3000 +http://:3000 +\end{lstlisting} + +\subsection{PairDrop Web Interface} + +\begin{figure}[h] + \centering + \includegraphics[width=0.95\linewidth]{pairdrop_web.png} + \caption{PairDrop Web Interface} +\end{figure} + +\subsection{Self-Hosted Demonstration at KL University} + +\begin{figure}[h] + \centering + \includegraphics[width=0.95\linewidth]{pairdrop_demo.jpg} + \caption{PairDrop Demonstration at KL University} +\end{figure} + +\subsection{Localization (Telugu Translation)} + +To make PairDrop accessible to Telugu users, I translated key documentation sections. + +\subsubsection{Translated Title} + +\textbf{PairDrop ఫైల్ షేరింగ్ డాక్యుమెంటేషన్} + +\subsubsection{Translated Terms} + +\begin{itemize} + \item Installation – ఇన్‌స్టాలేషన్ + \item Server – సర్వర్ + \item Network – నెట్‌వర్క్ + \item File Transfer – ఫైల్ ట్రాన్స్‌ఫర్ +\end{itemize} + +\subsection{Poster Overview} +GitHub + +GitHub - schlagmichdoch/PairDrop: PairDrop: Transfer Files Cross-Platform. No Setup, No Signup. + +PairDrop: Transfer Files Cross-Platform. No Setup, No Signup. - schlagmichdoch/PairDrop +A poster was designed to showcase: +\begin{itemize} + \item What is PairDrop + \item How it works + \item Key features + \item Benefits of self-hosting +\end{itemize} + +\newpage + +% ================================ +% 7. OPEN SOURCE CONTRIBUTIONS +% ================================ +\section{Open Source Contributions (PRs)} + +\subsection{Repositories Contributed} + +\begin{enumerate} + \item \textbf{fineanmol/hacktoberfest} – Added quick guide + \item \textbf{yfosp/start-here} – Added name and profile + \item \textbf{zero-to-mastery/start-here-guidelines} – Contributor update + \item \textbf{firstcontributions/first-contributions} – Added name +\end{enumerate} + +\subsection{Summary} + +\begin{itemize} + \item Total PRs: 4 + \item Merged: 4 + \item Open: 0 +\end{itemize} + +\newpage + +% ================================ +% 8. LINKEDIN POSTS +% ================================ +\section{LinkedIn Posts} + +\subsection{Post 1: First Open Source Contribution} +\url{https://www.linkedin.com/feed/update/urn:li:activity:7399151134055055360} + +\subsection{Post 2: Self-Hosting PairDrop} +\url{https://www.linkedin.com/in/mahi-korrapati-a24773369/} + +\subsection{Post 3: Open Source Journey} +\url{https://www.linkedin.com/feed/update/urn:li:activity:7399163090891587584} + +\newpage + +% ================================ +% 9. CONCLUSION +% ================================ +\section{Conclusion} + +This report helped me explore: +\begin{itemize} + \item Linux and command-line usage + \item GPG and secure communication + \item Privacy tools + \item Open-source licensing + \item Hosting a real application + \item GitHub collaboration +\end{itemize} + +It strengthened my understanding of open-source culture, security, and real-world deployment. + +\end{document} +Linkedin + +Just completed my first open-source contribution on GitHub! Really happy about this achievement. https://lnkd.in/dvz5ehvF | Mandava Nikhil + diff --git a/2400040162_M.NIKHIL/ose.pdf b/2400040162_M.NIKHIL/ose.pdf new file mode 100644 index 0000000..3b613c0 Binary files /dev/null and b/2400040162_M.NIKHIL/ose.pdf differ diff --git a/self b/self new file mode 100644 index 0000000..4d07abe --- /dev/null +++ b/self @@ -0,0 +1,65 @@ +స్వీయ-హోస్టెడ్ PairDrop సర్వర్ డాక్యుమెంటేషన్ + +పేరు: మండవ నిఖిల్ +కాలేజ్: KL యూనివర్సిటీ +ఆపరేటింగ్ సిస్టమ్: Ubuntu 22.04 LTS + +1️⃣ పరిచయం +ఈ పత్రం Ubuntu లో Self-Hosted PairDrop Server ను సెట్‌అప్ చేయడం మరియు నిర్వహించడం గురించి వివరంగా వివరిస్తుంది. +PairDrop అనేది Snapdrop నుండి ప్రేరణ పొందిన ఒక open-source, peer-to-peer ఫైల్ ట్రాన్స్ఫర్ టూల్. +ఇది cloud storage అవసరం లేకుండా — ఇంటర్నెట్ లేదా లోకల్ నెట్‌వర్క్ (LAN) ద్వారా పరికరాల మధ్య నేరుగా, వేగంగా, సురక్షితంగా ఫైళ్లను పంచుకునే సౌకర్యం ఇస్తుంది. +ఈ సెటప్ ఉద్దేశం ఏమిటంటే — ఫైల్ బదిలీలను స్వంత నియంత్రణలో, ప్రైవేట్ మరియు సురక్షిత వాతావరణంలో నిర్వహించడం. + +2️⃣ సిస్టమ్ అవసరాలు +PairDrop సర్వర్‌ని హోస్ట్ చేయడానికి ముందు మీ సిస్టమ్ ఈ క్రింది అవసరాలను తీర్చాలి: +- ఆపరేటింగ్ సిస్టమ్: Ubuntu 20.04 లేదా ఆపై (సిఫార్సు: Ubuntu 22.04 LTS) +- ప్రాసెసర్: Dual-core CPU లేదా అంతకంటే ఎక్కువ +- మెమరీ (RAM): కనీసం 2 GB +- స్టోరేజ్: కనీసం 10 GB ఖాళీ స్థలం +- నెట్‌వర్క్: స్థిరమైన ఇంటర్నెట్ కనెక్షన్ లేదా లోకల్ LAN +- సాఫ్ట్‌వేర్ డిపెండెన్సీలు: + - Node.js (v16 లేదా అంతకంటే పైగా) + - npm (Node Package Manager) + - Git + - PM2 (ప్రాసెస్ మేనేజ్‌మెంట్ కోసం) + +3️⃣ ఇన్‌స్టాలేషన్ మరియు సెటప్ +Ubuntu లో PairDrop ను హోస్ట్ చేయడానికి ఈ స్టెప్పులు అనుసరించండి: + +1. సిస్టమ్‌ను అప్డేట్ చేయండి: + sudo apt update && sudo apt upgrade -y +2. Node.js మరియు npm ఇన్‌స్టాల్ చేయండి: + sudo apt install nodejs npm -y +3. PairDrop రిపోజిటరీని క్లోన్ చేయండి: + git clone https://github.com/schlagmichdoch/PairDrop.git + cd PairDrop +4. డిపెండెన్సీలు ఇన్‌స్టాల్ చేయండి: + npm install +5. సర్వర్‌ను ప్రారంభించండి: + npm start +6. PairDrop ను యాక్సెస్ చేయండి: + బ్రౌజర్ ఓపెన్ చేసి, http://localhost:3000 లేదా మీ సర్వర్ యొక్క IP అడ్రెస్ కు వెళ్ళండి. + +4️⃣ సర్వర్ మేనేజ్‌మెంట్ మరియు కాన్ఫిగరేషన్ +సర్వర్ ఎప్పుడూ రన్ అవుతూ ఉండేలా చేయడానికి PM2 వంటి ప్రాసెస్ మేనేజర్ వాడటం ఉత్తమం. +PM2 ను గ్లోబల్‌గా ఇన్‌స్టాల్ చేయండి: + sudo npm install -g pm2 +PairDrop సర్వర్‌ను PM2 ద్వారా ప్రారంభించండి: + pm2 start npm --name pairdrop -- start +సిస్టమ్ రీబూట్ తర్వాత ఆటోమేటిక్‌గా రీస్టార్ట్ కావాలంటే: + pm2 startup + pm2 save +PairDrop ను HTTPS తో సెక్యూర్ చేయాలంటే, Nginx reverse proxy ఉపయోగించి సర్టిఫికేట్ సెట్ చేయవచ్చు. + +5️⃣ టెస్టింగ్, ట్రబుల్‌షూటింగ్ మరియు ముగింపు +సెటప్ తర్వాత, రెండు లేదా ఎక్కువ పరికరాల మధ్య ఫైళ్లను పంపి PairDrop సరిగా పనిచేస్తుందో పరీక్షించండి. +పరికరాలు ఒకదానిని ఒకటి గుర్తించకపోతే ఈ అంశాలను పరిశీలించండి: +- అన్ని పరికరాలు ఒకే నెట్‌వర్క్ లో ఉన్నాయా? +- ఫైర్‌వాల్ లేదా రౌటర్ WebRTC / WebSocket కనెక్షన్లను బ్లాక్ చేస్తున్నాయా? +- లాగ్స్ చూడటానికి ఈ కమాండ్ వాడండి: pm2 logs pairdrop + +🔚 ముగింపు +ఈ పత్రం Ubuntu లో PairDrop ను సొంతంగా హోస్ట్ చేయడానికి దశల వారీ మార్గదర్శకాన్ని అందిస్తుంది. +ఇది ద్వారా యూజర్లు తమ డేటాపై పూర్తి నియంత్రణ పొందుతారు మరియు ఫైల్ బదిలీ వేగం మరియు సెక్యూరిటీ మెరుగుపడతాయి. +ఈ సెటప్‌ను Mahi Venkat Pavan (KL University) ప్రాక్టికల్‌గా అమలు చేసి, peer-to-peer టెక్నాలజీని వాస్తవ ప్రపంచంలో ఎలా ఉపయోగించాలో ప్రదర్శించారు. + diff --git a/selfhosted/nikhil.md b/selfhosted/nikhil.md new file mode 100644 index 0000000..d3087aa --- /dev/null +++ b/selfhosted/nikhil.md @@ -0,0 +1,64 @@ +స్వీయ-హోస్టెడ్ PairDrop సర్వర్ డాక్యుమెంటేషన్ + +పేరు: మండవ నిఖిల్ +కాలేజ్: KL యూనివర్సిటీ +ఆపరేటింగ్ సిస్టమ్: Ubuntu 22.04 LTS + +1️⃣ పరిచయం +ఈ పత్రం Ubuntu లో Self-Hosted PairDrop Server ను సెట్‌అప్ చేయడం మరియు నిర్వహించడం గురించి వివరంగా వివరిస్తుంది. +PairDrop అనేది Snapdrop నుండి ప్రేరణ పొందిన ఒక open-source, peer-to-peer ఫైల్ ట్రాన్స్ఫర్ టూల్. +ఇది cloud storage అవసరం లేకుండా — ఇంటర్నెట్ లేదా లోకల్ నెట్‌వర్క్ (LAN) ద్వారా పరికరాల మధ్య నేరుగా, వేగంగా, సురక్షితంగా ఫైళ్లను పంచుకునే సౌకర్యం ఇస్తుంది. +ఈ సెటప్ ఉద్దేశం ఏమిటంటే — ఫైల్ బదిలీలను స్వంత నియంత్రణలో, ప్రైవేట్ మరియు సురక్షిత వాతావరణంలో నిర్వహించడం. + +2️⃣ సిస్టమ్ అవసరాలు +PairDrop సర్వర్‌ని హోస్ట్ చేయడానికి ముందు మీ సిస్టమ్ ఈ క్రింది అవసరాలను తీర్చాలి: +- ఆపరేటింగ్ సిస్టమ్: Ubuntu 20.04 లేదా ఆపై (సిఫార్సు: Ubuntu 22.04 LTS) +- ప్రాసెసర్: Dual-core CPU లేదా అంతకంటే ఎక్కువ +- మెమరీ (RAM): కనీసం 2 GB +- స్టోరేజ్: కనీసం 10 GB ఖాళీ స్థలం +- నెట్‌వర్క్: స్థిరమైన ఇంటర్నెట్ కనెక్షన్ లేదా లోకల్ LAN +- సాఫ్ట్‌వేర్ డిపెండెన్సీలు: + - Node.js (v16 లేదా అంతకంటే పైగా) + - npm (Node Package Manager) + - Git + - PM2 (ప్రాసెస్ మేనేజ్‌మెంట్ కోసం) + +3️⃣ ఇన్‌స్టాలేషన్ మరియు సెటప్ +Ubuntu లో PairDrop ను హోస్ట్ చేయడానికి ఈ స్టెప్పులు అనుసరించండి: + +1. సిస్టమ్‌ను అప్డేట్ చేయండి: + sudo apt update && sudo apt upgrade -y +2. Node.js మరియు npm ఇన్‌స్టాల్ చేయండి: + sudo apt install nodejs npm -y +3. PairDrop రిపోజిటరీని క్లోన్ చేయండి: + git clone https://github.com/schlagmichdoch/PairDrop.git + cd PairDrop +4. డిపెండెన్సీలు ఇన్‌స్టాల్ చేయండి: + npm install +5. సర్వర్‌ను ప్రారంభించండి: + npm start +6. PairDrop ను యాక్సెస్ చేయండి: + బ్రౌజర్ ఓపెన్ చేసి, http://localhost:3000 లేదా మీ సర్వర్ యొక్క IP అడ్రెస్ కు వెళ్ళండి. + +4️⃣ సర్వర్ మేనేజ్‌మెంట్ మరియు కాన్ఫిగరేషన్ +సర్వర్ ఎప్పుడూ రన్ అవుతూ ఉండేలా చేయడానికి PM2 వంటి ప్రాసెస్ మేనేజర్ వాడటం ఉత్తమం. +PM2 ను గ్లోబల్‌గా ఇన్‌స్టాల్ చేయండి: + sudo npm install -g pm2 +PairDrop సర్వర్‌ను PM2 ద్వారా ప్రారంభించండి: + pm2 start npm --name pairdrop -- start +సిస్టమ్ రీబూట్ తర్వాత ఆటోమేటిక్‌గా రీస్టార్ట్ కావాలంటే: + pm2 startup + pm2 save +PairDrop ను HTTPS తో సెక్యూర్ చేయాలంటే, Nginx reverse proxy ఉపయోగించి సర్టిఫికేట్ సెట్ చేయవచ్చు. + +5️⃣ టెస్టింగ్, ట్రబుల్‌షూటింగ్ మరియు ముగింపు +సెటప్ తర్వాత, రెండు లేదా ఎక్కువ పరికరాల మధ్య ఫైళ్లను పంపి PairDrop సరిగా పనిచేస్తుందో పరీక్షించండి. +పరికరాలు ఒకదానిని ఒకటి గుర్తించకపోతే ఈ అంశాలను పరిశీలించండి: +- అన్ని పరికరాలు ఒకే నెట్‌వర్క్ లో ఉన్నాయా? +- ఫైర్‌వాల్ లేదా రౌటర్ WebRTC / WebSocket కనెక్షన్లను బ్లాక్ చేస్తున్నాయా? +- లాగ్స్ చూడటానికి ఈ కమాండ్ వాడండి: pm2 logs pairdrop + +🔚 ముగింపు +ఈ పత్రం Ubuntu లో PairDrop ను సొంతంగా హోస్ట్ చేయడానికి దశల వారీ మార్గదర్శకాన్ని అందిస్తుంది. +ఇది ద్వారా యూజర్లు తమ డేటాపై పూర్తి నియంత్రణ పొందుతారు మరియు ఫైల్ బదిలీ వేగం మరియు సెక్యూరిటీ మెరుగుపడతాయి. +ఈ సెటప్‌ను Mahi Venkat Pavan (KL University) ప్రాక్టికల్‌గా అమలు చేసి, peer-to-peer టెక్నాలజీని వాస్తవ ప్రపంచంలో ఎలా ఉపయోగించాలో ప్రదర్శించారు.