ইলুমে জুপিটারহাব
Enterprise Feature: JupyterHub is an enterprise feature in Ilum and requires a valid enterprise license to function. It will not work with the standard open-source license.
সুচিপত্র
- সংক্ষিপ্ত বিবরণ
- স্থাপত্য
- LDAP প্রমাণীকরণ এবং অনুমোদন
- - গিটিয়া ইন্টিগ্রেশন (সংস্করণ-নিয়ন্ত্রিত নোটবুক)
- হেলমের মাধ্যমে জুপিটারহাব স্থাপন করা হচ্ছে (কনফিগারেশন এবং গোপনীয়তা)
- জুপিটারহাবের ভিতরে গিটিয়া অপারেটর (ডেভঅপস বিশদ)
- ব্যবহারকারীদের জন্য প্রথমবার লগইন গাইড
সংক্ষিপ্ত বিবরণ
ইলুমে জুপিটারহাব ইলাম প্ল্যাটফর্মের সাথে শক্তভাবে সংহত একটি মাল্টি-ইউজার জুপিটার নোটবুক পরিবেশ সরবরাহ করে। এটি একাধিক ব্যবহারকারীকে লগ ইন করতে এবং কুবারনেটস ক্লাস্টারে তাদের নিজস্ব বিচ্ছিন্ন জুপিটার উদাহরণগুলি তৈরি করতে দেয়, সমস্তই একটি কেন্দ্রীয় জুপিটারহাব পরিষেবা দ্বারা পরিচালিত। একটি স্বতন্ত্র থেকে ভিন্ন JupyterLab (যা নোটবুকগুলির জন্য একক ব্যবহারকারী ওয়েব-ভিত্তিক আইডিই), জুপিটারহাব একটি হিসাবে কাজ করে মাল্টি-ইউজার অর্কেস্ট্রেশন স্তর . লগ ইন করা প্রতিটি ব্যবহারকারী ক্লাস্টারের অভ্যন্তরে চলমান একটি ডেডিকেটেড জুপিটারল্যাব সার্ভার (তাদের ব্যক্তিগত ওয়ার্কস্পেস) পায়, যখন জুপিটারহাব কেন্দ্রীয়ভাবে প্রমাণীকরণ, স্প্যানিং এবং রিসোর্স ম্যানেজমেন্ট পরিচালনা করে। এর অর্থ ডেটা সায়েন্স দলগুলি একটি সাধারণ অবকাঠামো ভাগ করতে পারে তবে এখনও পৃথক নোটবুক পরিবেশে কাজ করতে পারে।
জুপিটারহাব ইলামের অভ্যন্তরে যুক্ত মূল বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
-
মাল্টি ব্যবহারকারী সমর্থন: ব্যবহারকারীরা প্রমাণীকরণ করে (এলডিএপি শংসাপত্রের মাধ্যমে) এবং প্রত্যেকে একটি কুবারনেটস পডে চলমান একটি বিচ্ছিন্ন জুপিটার ওয়ার্কস্পেস পায়। জুপিটারহাব এই ব্যবহারকারী পডগুলি পরিচালনা করে এবং নিশ্চিত করে যে সেগুলি নিরাপদে পৃথক করা হয়েছে। এটি স্থানীয় জুপিটার ইনস্টলেশনের প্রয়োজনীয়তা দূর করে এবং সংস্থাগুলিকে এক জায়গায় অনেক ব্যবহারকারীর জন্য নোটবুক হোস্ট করতে দেয়।
-
স্পার্ক ইন্টিগ্রেশন: Ilum’s JupyterHub comes pre-integrated with Apache Spark. Each environment is configured with স্পার্কম্যাজিক এবং এর মাধ্যমে ইলাম স্পার্ক ক্লাস্টারের সাথে সংযোগ স্থাপন করে ইলাম লিভি-প্রক্সি সেবা। এর অর্থ আপনি স্পার্কম্যাগিক যাদু ব্যবহার করে সরাসরি আপনার নোটবুক থেকে স্পার্ক জব চালাতে পারেন (
%manage_spark,%%sস্পার্ক) to create and manage Spark sessions. The Spark jobs execute on the cluster (not on the notebook container), leveraging Ilum’s interactive Spark session backend. By using Ilum’s Livy-compatible API, Jupyter can run heavy Spark computations while offloading the work to the Spark cluster, seamlessly integrating big data processing into your notebooks. -
গিটিয়ার সাথে অন্তর্নির্মিত সংস্করণ নিয়ন্ত্রণ: Every user’s notebook workspace is backed by a personal Git repository on Ilum’s integrated Gitea service. On first login, a repository is automatically created and initialized with template notebooks and directory structure. Users can version their code, track changes, and collaborate by pushing commits to this repo. This Git integration is unique to Ilum’s JupyterHub setup – it ensures that notebook content isn’t just saved on a disk, but is also version-controlled and accessible through a Git web interface.
-
স্ট্যান্ডার্ড জুপিটারল্যাব থেকে পার্থক্য: From an end-user perspective, working in JupyterHub’s interface will feel the same as regular JupyterLab (you can write code, execute cells, install packages, etc.). However, under the hood JupyterHub adds enterprise features: কেন্দ্রীয় প্রমাণীকরণ , মাল্টি-ইউজার আইসোলেশন , শেয়ার্ড রিসোর্স ম্যানেজমেন্ট এবং অন্যান্য ইলুমের সাথে একীকরণ সেবা . In Ilum, JupyterHub is not just an editor – it’s part of a larger ecosystem that includes LDAP-based access control, shared Spark clusters, and DevOps-managed infrastructure. This contrasts with a standalone JupyterLab where you operate on local resources with a single user context. In summary, JupyterLab হচ্ছে ইউজার ইন্টারফেস , যেখানে JupyterHub is the service that makes it multi-user and connected to Ilum’s cluster resources.
স্থাপত্য
"ইলুমে জুপিটারহাব ইন্টিগ্রেশনের আর্কিটেকচার"।

উপরের চিত্রটি চিত্রিত করে যে কীভাবে ইলুমের জুপিটারহাব বিভিন্ন উপাদানগুলির সাথে সংযোগ স্থাপন করে:
-
JupyterHub Service (Hub Pod): কেন্দ্রীয় হাবটি ইলুমের অংশ হিসাবে কুবারনেটস ক্লাস্টারে চলে। এটিতে জুপিটারহাব প্রক্রিয়া এবং একটি কাস্টম অন্তর্ভুক্ত রয়েছে গিটিয়া অপারেটর জুপিটারহাবের ভিতরে। হাবটি ব্যবহারকারীদের প্রমাণীকরণের জন্য এলডিএপি ব্যবহার করার জন্য কনফিগার করা হয়েছে এবং অন-ডিমান্ড ব্যবহারকারী নোটবুক সার্ভারগুলি তৈরি করে।
-
একক ব্যবহারকারী সার্ভার (JupyterLab Pod): When a user logs in, JupyterHub launches a dedicated pod running a single-user Jupyter server for that user. Users interact with this Jupyter interface to run notebooks. Each user pod is isolated and has access only to that user’s data (including their Git repo and any persistent volume for notebooks).
-
LDAP সার্ভার (প্রমাণীকরণ ও অনুমোদন): জুপিটারহাবের ব্যবহারকারীর প্রমাণীকরণের জন্য একটি বাহ্যিক এলডিএপি ডিরেক্টরি (বা ইলামের পাশাপাশি মোতায়েন করা একটি এলডিএপি পরিষেবা) প্রয়োজন। যখন কোনও ব্যবহারকারী জুপিটারহাবে লগ ইন করার চেষ্টা করে, হাবটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড যাচাই করতে কনফিগার করা LDAP সার্ভারের সাথে যোগাযোগ করে। কেবলমাত্র এলডিএপি প্রমাণীকরণ পাস করা ব্যবহারকারীদের (এবং নির্দিষ্ট গ্রুপ সদস্যতার মানদণ্ড পূরণ করে, যদি সেট থাকে) প্রবেশের অনুমতি দেওয়া হয়। কার্যত, এলডিএপি আইএলএম পরিষেবাদি জুড়ে ব্যবহারকারীর পরিচয় এবং শংসাপত্রগুলির জন্য সত্যের একক উত্স হিসাবে কাজ করে।
-
গিটিয়া গিট সার্ভিস (ভার্সন কন্ট্রোল): Ilum includes an internally hosted Git service (Gitea). JupyterHub’s গিটিয়া অপারেটর monitors the cluster for events such as new user pods starting. On a user’s first login, the operator uses Gitea’s API to একটি গিট সংগ্রহস্থল এবং দল বিধান for the user. The user’s notebook pod will then perform an initialization sync: it uses Git (over HTTP) to pull in template notebooks from the new repo. This sync uses the user’s LDAP credentials or a configured service account to authenticate to Gitea. After initialization, the user’s environment has a checked-out copy of their repository (with starter notebooks in place), and any changes the user makes can be committed and pushed back to Gitea. (Details in গিটিয়া ইন্টিগ্রেশন নিচের অংশ)
-
ইলাম কোর সার্ভিসেস (লিভি-প্রক্সি এপিআই): Ilum's core (the central management component of Ilum) provides an API for interactive Spark sessions, exposed via the ইলুম-লিভি-প্রক্সি service. Jupyter notebooks communicate with this service when the user runs Spark code. The Sparkmagic extension in Jupyter is preconfigured with an endpoint pointing to the Livy-proxy (http://ilum-core:9888 internally). When a user creates a Spark session from the notebook, Sparkmagic contacts Ilum's Livy-proxy, which in turn instructs Ilum Core to launch a Spark driver (and executors) for that user's session. The Spark jobs then run on the স্পার্ক ক্লাস্টার . Ilum Core manages these Spark pods and links them to the user's context. In practice, this means a user can click "Create Spark Session" in Jupyter and behind the scenes a full Spark context is provisioned on the cluster – all without leaving the notebook interface.
-
Ilum UI এবং অন্যান্য সেবা: জুপিটারহাব একটি মডিউল হিসাবে ইলাম ইউআইতে একীভূত হয়েছে। উদাহরণস্বরূপ, ইলাম ওয়েব ইন্টারফেস থেকে, আপনি নেভিগেট করতে পারেন মডিউল > JupyterHub to open JupyterHub. The Ilum UI can optionally proxy to JupyterHub so that users who are already logged into Ilum can quickly reach the Jupyter interface. (By default, JupyterHub has its own login page and session management distinct from the Ilum UI – though using the same LDAP backend for credentials.)
সংক্ষেপে, ইলুমের জুপিটারহাব এর চৌরাস্তায় বসে প্রমাণীকরণ (এলডিএপি) , ডাটা & কোড (গীতিয়া) এবং গণনা (ইলাম কোরের মাধ্যমে স্পার্ক) . আর্কিটেকচার নিশ্চিত করে যে যখন কোনও ব্যবহারকারী একটি নোটবুক শুরু করে: সেগুলি একটি কেন্দ্রীয় ডিরেক্টরির বিরুদ্ধে যাচাই করা হয়, সংস্করণ নিয়ন্ত্রণের সাথে ব্যবহারের জন্য প্রস্তুত নোটবুক পরিবেশ দেওয়া হয় এবং বিতরণ কম্পিউটিং পাওয়ারে এক-ক্লিক অ্যাক্সেস থাকে।
LDAP প্রমাণীকরণ এবং অনুমোদন
Ilum’s JupyterHub uses এলডিএপি প্রমাণীকরণ (ব্যবহারকারীর শংসাপত্রগুলি যাচাই করা) এবং অনুমোদন (কে পরিষেবাটি অ্যাক্সেস করতে পারে তা নিয়ন্ত্রণ করা) উভয়ের জন্য। এর অর্থ হ'ল ব্যবহারকারীদের অবশ্যই কনফিগার করা এলডিএপি ডিরেক্টরিতে একটি অ্যাকাউন্ট থাকতে হবে এবং জুপিটারহাব এলডিএপি-তে আবদ্ধ করুন লগইন সময়ে ব্যবহারকারীর নাম/পাসওয়ার্ড পরীক্ষা করতে। ইলুমে এলডিএপি ইন্টিগ্রেশন কীভাবে সেট আপ করা হয় তার কয়েকটি গুরুত্বপূর্ণ দিক রয়েছে:
-
এলডিএপি প্রয়োজনীয়: আপনি একটি LDAP সার্ভার কনফিগার করা আবশ্যক for JupyterHub to function in Ilum. Ilum does not support JupyterHub with simple internal accounts or OAuth at this time – the hub is tightly integrated with LDAP for consistency with enterprise deployments. If you don’t already have an LDAP server, you can deploy one (for example, an OpenLDAP instance) as part of your Kubernetes environment. In fact, Ilum’s Helm charts allow you to deploy a test OpenLDAP as a dependency in non-production setups. See the LDAP Security documentation for a comprehensive guide to setting up LDAP, including sample LDIFs and Helm values.
-
LDAP এর জন্য Helm কনফিগারেশন: এলডিএপি-র জন্য সমস্ত সংযোগের বিশদ এবং প্রশ্নগুলি হেলম মানগুলির মাধ্যমে সরবরাহ করা হয়। সর্বনিম্ন, আপনাকে সেট করতে হবে:
- LDAP সার্ভার URL (গুলি) এবং বেস DN।
- একটি আবদ্ধ ডিএন এবং পাসওয়ার্ড (যদি আপনার এলডিএপি অনুসন্ধান করার জন্য কোনও পরিষেবা অ্যাকাউন্টের প্রয়োজন হয়)।
- ব্যবহারকারীদের জন্য অনুসন্ধান বেস এবং ফিল্টার, এবং ব্যবহারকারীর নাম হিসাবে ব্যবহার করার জন্য বৈশিষ্ট্য।
- গোষ্ঠীগুলির জন্য অনুসন্ধান বেস এবং ফিল্টার (যদি গোষ্ঠী-ভিত্তিক বিধিনিষেধ ব্যবহার করে)।
উদাহরণস্বরূপ, ইলুমে এলডিএপি সক্ষম করতে, আপনি আপনার হেলম আপগ্রেড / ইনস্টল কমান্ডে নিম্নলিখিতগুলির মতো প্যারামিটারগুলি অন্তর্ভুক্ত করতে পারেন (এই উদাহরণটি স্থানধারক মান ব্যবহার করে):
helm upgrade --install ilum ilum/ilum \
--সেট ilum-core.security.type="LDAP" \
--set ilum-core.security.ldap.urls[0]="ldap://ilum-openldap:389" \
--set ilum-core.security.ldap.base="dc=ilum,dc=cloud" \
--set ilum-core.security.ldap.username="cn=admin,dc=ilum,dc=cloud" \
--সেট ilum-core.security.ldap.password="<bind-password>" \
--set ilum-core.security.ldap.userMapping.base="ou=people" \
--set ilum-core.security.ldap.userMapping.filter="uid={0}" \
--set ilum-core.security.ldap.groupMapping.base="ou=groups" \
--set ilum-core.security.ldap.groupMapping.filter="(member={0})"
উপরোক্ত তথ্যে, security.type="LDAP" switches Ilum to LDAP mode, and the other values supply the connection info and queries (UID filter, group filter, etc.). These should be adjusted to match your directory’s schema and structure.
-
অনুমোদিত এলডিএপি গ্রুপ: Typically, you may not want every LDAP user to use JupyterHub, so Ilum’s JupyterHub supports restricting access to specific groups. You can configure an অনুমোদিত গ্রুপ জুপিটারহাব এলডিএপি প্রমাণীকরণকারীর তালিকা। এটি এক বা একাধিক গ্রুপের সম্পূর্ণ ডিএন সরবরাহ করে করা হয়; কেবলমাত্র সেই গোষ্ঠীগুলির মধ্যে কমপক্ষে একটির সদস্য ব্যবহারকারীরাই লগ ইন করতে পারবেন। প্রযুক্তিগতভাবে, হেলম চার্ট সেট করে
jupyterhub.hub.config.LDAPAuthenticator.allowed_groupsআপনার নির্দিষ্ট করা গ্রুপ DNs সহ প্যারামিটার। উদাহরণস্বরূপ, আপনি যদি কেবল এর সদস্যদের চানcn=datascientist,ou=subgroups,dc=ilum,dc=cloudজুপিটারহাব তারপরে অ্যাক্সেসের অনুমতি দেওয়ার আগে লগিং-ইন ব্যবহারকারী সেই গোষ্ঠীর সদস্য কিনা তা নিশ্চিত করার জন্য একটি এলডিএপি ক্যোয়ারী সম্পাদন করবে। (যদি allowed_groups সেট না করা থাকে তবে যে কোনও বৈধ এলডিএপি ব্যবহারকারী ডিফল্টরূপে লগ ইন করতে পারেন)) -
ব্যবহারকারীর গুণাবলী ম্যাপিং: As part of LDAP integration, Ilum maps certain LDAP attributes onto the user’s Jupyter environment. For instance, the uid attribute is used as the JupyterHub username (and as the directory name for the user’s workspace). Attributes like পুরো নাম (উদাঃ সিএন বা ডিসপ্লেনাম) এবং ইমেল ( mail ) are pulled from LDAP and can be used for the user’s Git configuration and in the Ilum UI. Under the hood, Ilum’s configuration allows specifying which LDAP attributes correspond to Ilum user fields – e.g., mapping mail -> email, cn -> full name. When a user logs in, these mappings ensure that the Jupyter environment “knows” the user’s name and email. In practice, the JupyterHub spawner might set the Git client config inside the container using this info (so that any commits the user makes will carry their correct name/email). It also means the Ilum platform can show the proper identity for notebook servers.
The LDAP bind password and other credentials should be treated as sensitive secrets. It’s recommended to supply them via your Helm values (or a Kubernetes Secret) and না উত্স নিয়ন্ত্রণে তাদের পরীক্ষা করুন। উপরের উদাহরণটি দেখায় --সেট ilum-core.security.ldap.password="psswd" চিত্রের জন্য, তবে একটি বাস্তব স্থাপনায় আপনি একটি সুরক্ষিত মান ব্যবহার করবেন। আপনার LDAP সংযোগটি সুরক্ষিত কিনা তা নিশ্চিত করুন (উদাঃ, LDAPS ব্যবহার করুন এবং LDAPS কনফিগারেশনের জন্য Ilum ডক্সে প্রদর্শিত উপযুক্ত শংসাপত্র সরবরাহ করুন)।
Finally, because JupyterHub is tightly coupled with LDAP in Ilum, if LDAP is not configured correctly, users will not be able to log in to notebooks. Always verify your LDAP settings by logging into the main Ilum UI first. Once Ilum core authentication via LDAP is confirmed working, JupyterHub should also be able to authenticate users (since it uses the same underlying config). If you need to troubleshoot JupyterHub LDAP issues, you can inspect the JupyterHub pod logs for authentication errors – it will typically log LDAP connection attempts and any filter mismatches.
For detailed LDAP configuration, see the LDAP Security documentation for comprehensive guidance on LDAP setup, including SSL/TLS configuration, attribute mapping, and synchronization options.
- গিটিয়া ইন্টিগ্রেশন (সংস্করণ-নিয়ন্ত্রিত নোটবুক)
ইলুমের জুপিটারহাবের একটি স্ট্যান্ডআউট বৈশিষ্ট্য হ'ল এর অন্তর্নির্মিত সংহতকরণ গীতিয়া , Ilum’s lightweight Git service. This integration ensures that every user’s notebooks and code are version-controlled from the moment they start using Jupyter. Here’s how it works and what happens on a user’s first login:
-
প্রতিটি ব্যবহারকারীর জন্য ব্যক্তিগত গিট সংগ্রহস্থল: প্রথম লগইনে গিটিয়া অপারেটর (জুপিটারহাব পডের ভিতরে চলছে) একটি তৈরি করবে নতুন সংগ্রহস্থল ব্যবহারকারীর জন্য গিটিয়াতে। সাধারণত, এই রেপোটি ব্যবহারকারীর কাছে ব্যক্তিগত (যদিও তারা পরে এটি ভাগ করে নিতে বেছে নিতে পারে)। একটি নির্দিষ্ট গীতিয়ার অধীনে সংগ্রহশালা তৈরি করা যেতে পারে সংস্থা or namespace designated for Ilum notebooks, or simply under the user’s account – but in either case, it’s the user’s personal repositoryতাদের জুপিটার নোটবুক এবং ফাইলগুলির জন্য। সাংগঠনিক স্বচ্ছতার জন্য, অপারেটর একটি সংশ্লিষ্ট তৈরি করে দল গিটিয়াতে এবং ব্যবহারকারীকে এটিতে নিয়োগ করে, এটি নিশ্চিত করে যে কেবলমাত্র সেই ব্যবহারকারী (এবং প্রশাসকদের) নতুন সংগ্রহস্থলে অ্যাক্সেস রয়েছে। প্রকৃতপক্ষে, প্রতিটি ব্যবহারকারী পায় নিজস্ব দল ও রেপো on the Gitea server on first login (this is done to encapsulate permissions – e.g., the team could correspond to an Ilum Group or just serve to isolate access)
-
প্রাথমিক নোটবুক টেমপ্লেট: ইলাম টেমপ্লেট সামগ্রী সহ নতুন সংগ্রহস্থলগুলি প্রাক-পপুলেট করতে পারে। হেলম চার্টে কনফিগারম্যাপস বা টেমপ্লেট ফাইল রয়েছে স্টার্টার নোটবুক, ডিরেক্টরি কাঠামো এবং কনফিগারেশন ফাইল যা নতুন ব্যবহারকারীদের জন্য উপযোগী। উদাহরণস্বরূপ, আপনি একটি খুঁজে পেতে পারেন
IlumIntro.ipynbনোটবুক, উদাহরণ স্পার্ক নোটবুক, বা আপনি লগ ইন করার সাথে সাথে একটি নির্দিষ্ট ফোল্ডার বিন্যাস। এই ফাইলগুলি কুবারনেটস কনফিগারেশনম্যাপ (হেলম চার্টে সংজ্ঞায়িত) থেকে আসে এবং প্রারম্ভিককরণের সময় জুপিটারহাব পরিবেশে অনুলিপি করা হয়। হাবেরgit-init-repoinit container will perform a Git commit to add these templates to the user’s repo on first setup.
প্রথম লগইন ওয়ার্কফ্লো:
যখন কোনও ব্যবহারকারী প্রথমবারের মতো জুপিটারহাবে লগ ইন করে:
-
JupyterHub LDAP এর মাধ্যমে ব্যবহারকারীকে প্রমাণীকরণ করে।
-
দ্য হাব spawns the user’s notebook pod. এই পডটি একক-ব্যবহারকারী জুপিটার সার্ভারটি শুরু করে।
-
একই সাথে, ঐ গিটিয়া অপারেটর শনাক্ত করে that a new Jupyter notebook pod was created (for a user that likely has no repo yet). It then calls the Gitea API (using a special admin account) to set up the repository and access rights for that user. (If the user does not yet exist in Gitea’s database, the operator may trigger the creation of the user account as well. In many cases, Gitea is configured with LDAP authentication too, so the user can use the same credentials on the Gitea web interface – but an initial entry might be created via API to attach them to the repo/team.)
-
একবার রেপো তৈরি হয়ে গেলে, একটি init process in the user’s pod syncs the content. Typically, this involves setting up Git inside the notebook container and cloning the empty repository from Gitea into the user’s workspace, then copying the template files into it, git add/commit, and pushing back to Gitea.
In either case, the user’s LDAP credentials are used for the Git operation (so that the commit is attributed to the user and the push is authenticated). Since Gitea is running internally, the Helm chart knows the Gitea service address (e.g., ilum-gitea-http:3000 ) and uses the provided গিট ব্যবহারকারীর নাম/পাসওয়ার্ড to perform the Git push. After this step, the user’s repository in Gitea is no longer empty – it contains the starter notebooks from the template. The user’s Jupyter file browser will show these files immediately, because they’ve been pulled into the pod’s filesystem. The user server finishes launching and the user can now interact with the notebook UI. From their perspective, they see a pre-populated workspace and can begin working with the provided examples or create new notebooks.
চলমান ব্যবহার এবং সিঙ্ক: প্রথমবার আরম্ভের পরে, সংগ্রহস্থলটি ব্যবহারকারীর অন্তর্গত। আছে টেমপ্লেট থেকে কোনও অবিচ্ছিন্ন-জোরপূর্বক সিঙ্ক নেই – the templates are applied only once. Users are expected to use Git to manage their work going forward. This means any new notebooks they create or changes they make are not automatically pushed to Gitea unless they commit and push. Ilum’s JupyterLab comes with the JupyterLab Git এক্সটেনশন ইনস্টল করা (সাইডবারে গিট আইকনের মাধ্যমে অ্যাক্সেসযোগ্য), যা জুপিটার ইন্টারফেসের মধ্যে পরিবর্তনগুলি করা এবং ধাক্কা / টানতে সহজ করে তোলে। ব্যবহারকারীরা জুপিটারে একটি টার্মিনাল খুলতে পারেন এবং ম্যানুয়ালি গিট কমান্ড ব্যবহার করতে পারেন। দূরবর্তী উত্সটি ইতিমধ্যে ইলাম গিটিয়া সার্ভারে তাদের ব্যক্তিগত সংগ্রহস্থলে নির্দেশ করার জন্য কনফিগার করা হয়েছে।
সহযোগিতা ও ভাগাভাগি করাঃ By default, each user’s repo is private to them (plus any Ilum admin). If a user wants to share a notebook, they can গিটিয়ার মাধ্যমে অ্যাক্সেস মঞ্জুর করুন (উদাঃ, কোনও সহযোগীকে তাদের রেপোতে আমন্ত্রণ জানান বা নোটবুক রফতানি করুন)। গিটের এই টাইট ইন্টিগ্রেশনের অর্থ কোড পর্যালোচনা এবং সংস্করণ ট্র্যাকিংয়ের মতো সর্বোত্তম অনুশীলনগুলি নোটবুকগুলিতে প্রয়োগ করা যেতে পারে।
সংগ্রহস্থল কাঠামো: প্রারম্ভিক রেপোর সঠিক কাঠামোটি হেলম মানগুলির মাধ্যমে কাস্টমাইজ করা যায় (কনফিগম্যাপস ব্যবহার করে বা একটি কাস্টম জুপিটার চিত্র তৈরি করে)। সাধারণ নিদর্শনগুলি হ'ল নমুনা নোটবুকগুলির জন্য একটি ফোল্ডার অন্তর্ভুক্ত করা (উদাঃ, কাজ /)। এটি নতুন ব্যবহারকারীদের দিকনির্দেশনা দেয় এবং সংস্থা জুড়ে একটি সামঞ্জস্যপূর্ণ প্রকল্প কাঠামো নিশ্চিত করে।
ব্যবহারকারীদের জন্য টিপস:
আপনার প্রথম লগইন করার পরে, আপনার নোটবুক সার্ভারটি ইতিমধ্যে একটি গিট সংগ্রহস্থলের সাথে লিঙ্ক করা আছে।When you click the “Save” button in Jupyter, your changes are saved only to your personal persistent storage (PVC) on the cluster.এর অর্থ হ'ল সমস্ত সম্পাদনা এবং নতুন নোটবুকগুলি আপনার ওয়ার্কস্পেসে উপলভ্য থাকবে, এমনকি আপনার সার্ভারটি পুনরায় চালু করা হলেও, যতক্ষণ না আপনার ব্যবহারকারীর ডেটা মুছে ফেলা হয়।
আপনি যদি আপনার গিট সংগ্রহস্থলে (গিটিয়ায় হোস্ট করা) আপনার পরিবর্তনগুলি ব্যাক আপ করতে চান বা অন্যের সাথে ভাগ করতে চান তবে আপনাকে জুপিটারল্যাবে গিট ইন্টিগ্রেশন ব্যবহার করতে হবে:
- গিট প্যানেলটি খুলুন (বাম সাইডবারে)।
- পরিবর্তনগুলি মঞ্চস্থ করুন, একটি প্রতিশ্রুতিবদ্ধ বার্তা যুক্ত করুন এবং আপনার কাজটি প্রতিশ্রুতিবদ্ধ করুন।
- Click “Push” to upload your commits to the central Git server.
মনে: কেবলমাত্র যে ফাইলগুলি প্রতিশ্রুতিবদ্ধ এবং গিটে ঠেলে দেওয়া হয়েছে সেগুলি আপনার সংগ্রহস্থলে সংরক্ষণ করা হবে এবং গিটিয়ায় ব্যাক আপ করা হবে। যদি আপনার নোটবুক সার্ভারটি কখনও মুছে ফেলা হয় বা আপনার পরিবেশ পুনরুদ্ধার করার প্রয়োজন হয় তবে আপনি সর্বদা গিট সংগ্রহস্থল থেকে আপনার সর্বশেষ প্রতিশ্রুতিগুলি টানতে পারেন। গিট ব্যবহার করা আপনাকে আপনার নোটবুকের পূর্ববর্তী সংস্করণগুলিতে ফিরে যেতে এবং শাখা বা টান অনুরোধের মাধ্যমে অন্যের সাথে সহযোগিতা করতে দেয়।
সংক্ষেপে, ইলুমে গিটিয়া ইন্টিগ্রেশন আপনার জুপিটার ওয়ার্কস্পেসকে গেট-গো থেকে একটি সংস্করণ-নিয়ন্ত্রিত প্রকল্প সংগ্রহস্থলে পরিণত করে। এটি পুনরুত্পাদনযোগ্যতা এবং সহযোগিতাকে উত্সাহ দেয় এবং এটি এর সাথে সারিবদ্ধ হয় গিটঅপস principles (even for notebooks). Data scientists can treat notebooks as code – committing changes, writing commit messages, and using branches or pull requests for major updates – all while staying within the comfortable Jupyter environment.
হেলমের মাধ্যমে জুপিটারহাব স্থাপন করা হচ্ছে (কনফিগারেশন এবং গোপনীয়তা)
এতে helm aio chart, ilum-jupyterhubহয় disabled by default. You must explicitly enable it and configure এলডিএপি for it to function.
To successfully deploy JupyterHub, you must enable the service and configure the LDAP connection details for both Ilum Core and Gitea.
1. Enable and Configure LDAP
You must provide your LDAP server details. If you do not have an existing LDAP server, you can enable the bundled OpenLDAP service (which is also disabled by default) for testing purposes.
যেমন মূল্যবোধ.ইয়ামল configuration:
# 1. Enable the bundled OpenLDAP service (for testing/demo only)
Openldap :
সক্ষম : সত্য
# 2. Configure Ilum Core to use LDAP
ইলুম-কোর :
নিরাপত্তা :
টাইপ : "এলডিএপি"
এলডিএপি :
# URL of your LDAP server (or the bundled one)
ইউআরএল :
- এলডিএপি : ইলুম - Openldap : 389
ভিত্তি : "dc=ilum,dc=cloud"
ব্যবহারকারীর নাম : "cn=admin,dc=ilum,dc=cloud"
পাসওয়ার্ড : "Not@SecurePassw0rd" # Change this!
# User search settings
ইউজারম্যাপিং :
ভিত্তি : "উ = মানুষ"
ফিল্টার : "UID={0}"
# Group search settings
গ্রুপম্যাপিং :
ভিত্তি : "ou=groups"
ফিল্টার : "(member={0})"
# 3. Enable JupyterHub
ilum-jupyterhub:
সক্ষম : সত্য
# 4. Configure Gitea with LDAP (Required for notebook storage)
গিটিয়া :
সক্ষম : সত্য
গিটিয়া :
এলডিএপি :
- নাম : "LDAP"
securityProtocol: "unencrypted"
আয়োজক : "ilum-openldap"
পোর্ট : 389
bindDn: "cn=admin,dc=ilum,dc=cloud"
bindPassword: "Not@SecurePassw0rd"
userSearchBase: "ou=people,dc=ilum,dc=cloud"
userFilter: "(uid=%s)"
adminFilter: "(uid=ilumadmin)"
usernameAttribute: "ইউআইডি"
surnameAttribute: "sn"
emailAttribute: "মেইল"
synchronizeUsers: সত্য
কনফিগার :
cron:
sync_external_users:
সক্ষম : "সত্যি"
RUN_AT_START: সত্য
NOTICE_ON_SUCCESS: সত্য
SCHEDULE: "@every 5m"
UPDATE_EXISTING: সত্য
ঐ cron.sync_external_users configuration is প্রয়োজনীয় when using LDAP authentication with Gitea. This cron job automatically synchronizes user information from your LDAP directory to Gitea every 5 minutes.
গুরুত্বপূর্ণ: ঐ RUN_AT_START: true setting is critical. Without this initial synchronization, operators (such as the Gitea Operator) will not have access to Gitea, preventing them from creating repositories or managing permissions for new users.
This configuration ensures that:
- New LDAP users are automatically created in Gitea when they first access JupyterHub
- User attributes (name, email) are kept in sync with LDAP
- User access is updated based on LDAP group membership changes
When upgrading Ilum or changing JupyterHub configurations, please note that running user notebook pods are NOT automatically restarted. To apply changes (such as new images, secrets, or environment variables), users must stop and restart their servers manually (via the JupyterHub control panel), or an administrator must explicitly restart them.
Enterprise Image Access
The Ilum Enterprise license grants access to private Docker repositories containing the optimized JupyterHub images required for the platform. To use these images, you must configure a Kubernetes secret to authenticate with the registry.
You can configure ilum-jupyterhub to automatically create this secret using your credentials:
ilum-jupyterhub:
imagePullSecret:
create: সত্য
# The registry URL provided with your license
registry: "registry.ilum.cloud"
# Your enterprise username
ব্যবহারকারীর নাম : "my-enterprise-user"
# Your enterprise password/token
পাসওয়ার্ড : "my-secret-token"
ইমেল : " [email protected] "
Alternatively, if you have already created a secret in your namespace (e.g., my-reg-cred), you can reference it:
ilum-jupyterhub:
imagePullSecret:
create: মিথ্যা
নাম : "my-reg-cred"
automaticReferenceInjection: সত্য
Advanced JupyterHub Configuration
While the basic configuration enables the service, ilum-jupyterhub offers granular control over its integrations.
JupyterHub Specific LDAP
By default, JupyterHub can share the global LDAP settings, but you can also configure it independently if needed. This is useful if JupyterHub users are in a different directory or require different search filters.
ilum-jupyterhub:
এলডিএপি :
সক্ষম : সত্য
ইউআরএল :
- এলডিএপি : ইলুম - Openldap : 389
ভিত্তি : "dc=ilum,dc=cloud"
ব্যবহারকারীর নাম : "cn=admin,dc=ilum,dc=cloud"
পাসওয়ার্ড : "Not@SecurePassw0rd"
প্রশাসক :
- ilumadmin
- অ্যাডমিন
userSearchBase: "ou=people,dc=ilum,dc=cloud"
userSearchFilter: "UID={0}"
groupSearchBase: "ou=groups,dc=ilum,dc=cloud"
groupSearchFilter: "(member={0})"
allowedGroups: [ ]
userAttribute: "ইউআইডি"
fullnameAttribute: "সিএন"
emailAttribute: "মেইল"
groupNameAttribute: "সিএন"
groupMemberAttribute: "member"
useSsl: মিথ্যা
startTls: মিথ্যা
lookupDn: সত্য
Gitea Connection Settings
ঐ git section in ilum-jupyterhub controls how the Hub connects to Gitea to provision repositories. This is pre-configured in helm aio to use the internal Gitea, but can be customized.
ilum-jupyterhub:
git:
existingSecret: ইলুম - git- প্রমাণপত্রাদি
ইমেল : ilum@ilum
সংগ্রহস্থল : জুপিটার
address: "ilum-gitea-http:3000"
ইউআরএল : "http://ilum-gitea-http:3000"
orgName: "ilum-jupyterhub"
operatorImage:
নাম : ilum/dev
ট্যাগ : jupyterhub- গিটিয়া - কার্যকর্তা - dev212
রহস্য :
নাম : ইলুম - git- প্রমাণপত্রাদি
usernameKey: ব্যবহারকারীর নাম
passwordKey: পাসওয়ার্ড
Enabling SSH Access
You can enable SSH access to the notebook servers. This allows users to connect to their running Jupyter pods via SSH (e.g., for VS Code Remote). This feature is disabledডিফল্টরূপে।
ilum-jupyterhub:
ssh:
সক্ষম : মিথ্যা
keysSecret: ইলুম - জুপিটার - ssh- keys
# Service backing both SSH master and per-user modes; adjust the mode below to control whether
# a shared authorized_keys or per-user secrets are mounted in each pod.
পরিমণ্ডল : মাস্টার
perUserSecretNameTemplate: ssh- keys- { ব্যবহারকারীর নাম }
perUserAuthorizedKeysKey: authorized_keys
সেবা :
টাইপ : নোডপোর্ট
পোর্ট : 2222
টার্গেট পোর্ট : 2222
নোডপোর্ট : ""
ক্লাস্টারআইপি : ""
loadBalancerIP : ""
টীকা : { }
prefix: "ilum-jupyter-ssh"
sshdConfig:
customConfig: [ ]
operatorImage:
নাম : ilum/dev
ট্যাগ : jupyterhub- ssh- কার্যকর্তা - dev212
extraEnv: [ ]
জুপিটারহাবের ভিতরে গিটিয়া অপারেটর (ডেভঅপস বিশদ)
For cluster administrators and maintainers, it’s useful to understand the implementation of the গিটিয়া অপারেটর যা জুপিটারহাব দিয়ে চলে। এই উপাদানটি নতুন ব্যবহারকারীদের জন্য গিট সংগ্রহস্থল বিধানকে স্বয়ংক্রিয় করে:
-
এটা কি? গিটিয়া অপারেটর একটি ছোট কুবারনেটস অপারেটর (নিয়ামক) দিয়ে নির্মিত কোফ ফ্রেমওয়ার্ক (কুবারনেটস অপারেটর পাইথনিক ফ্রেমওয়ার্ক)। এটি জুপিটারহাব পডের অংশ হিসাবে চলে (পৃথক স্থাপনা হিসাবে নয়)। সংক্ষেপে, যখন জুপিটারহাব ধারক শুরু হয়, তখন এটি অপারেটর প্রক্রিয়া (পাইথনে লিখিত) চালু করে যা কুবারনেটস এপিআই সার্ভার এবং গিটিয়া এপিআইয়ের সাথে সংযোগ স্থাপন করে।
-
কী দেখছে? এটা শোনে JupyterHub সম্পর্কিত ঘটনাবলী – specifically, it can watch for the creation of user notebook pods or Hub events via the JupyterHub API. A common design is to watch for Kubernetes Pods with a certain label (for example, label like component=singleuser-server or an annotation that JupyterHub adds for user pods). When it detects a new pod for a given user, it interprets that as “User X has logged in and their server is starting up.”
-
রেপো/টিম ক্রিয়েশন: এই জাতীয় ইভেন্টের উপর, অপারেটর এর সাথে যোগাযোগ করবে Gitea’s REST APIব্যবহারকারীর প্রয়োজনীয় গিট সংস্থান রয়েছে তা নিশ্চিত করতে:
-
এটা হতে পারে একটি গীতা তৈরি করুন ব্যবহারকারী একাউন্ট for the logging-in user if one doesn’t exist. (If Gitea is configured to use LDAP authentication, the account might be auto-created on first login instead; the operator’s behavior might vary depending on config. In many cases, the user account in Gitea will be created the first time the user pushes or logs in to Gitea, so the operator might not explicitly create the user.)
-
এটা হবে একটি দল এবং / অথবা সংস্থা তৈরি করুন to logically contain the user’s repo. For example, Ilum might have a global organization (like ilum-jupyterhub) and the operator will create a team within that org named after the user. The purpose of this is to manage repository permissions in Gitea. The team will include the user (linking their Gitea account) and possibly no one else (for a personal repo scenario). The operator uses the Gitea admin credentials (from ilum-jupyter.git.username/password ) to perform these actions via the API.
-
এরপরে, এটি একটি সংগ্রহস্থল তৈরি করে ব্যবহারকারীর জন্য গিটিয়াতে। পূর্ববর্তী কনফিগারেশন থেকে আমরা জানি যে ডিফল্ট রেপো নাম প্যাটার্নটি হ'ল
Jupyterhub-{username}. অপারেটর এই রেপো তৈরি করবে (আবার গিটিয়া এপিআইয়ের মাধ্যমে), উপযুক্ত ব্যবহারকারী / দলের কাছে তার মালিকানা সেট করবে এবং সম্ভবত এটি শুরু করবে। -
তখন অনুমতি বরাদ্দ করে – for instance, if using an organization, it ensures the created team has write access to the new repository and that the user is in that team. This way the user (when authenticated to Gitea) can read/write their repo, but others cannot (unless added). All these steps happen within a few seconds after the pod start event.
-
-
ইন-ক্লাস্টার অপারেশন: Since the operator runs inside the JupyterHub pod, it has network access to the Gitea service (internal cluster address) and to the Kubernetes API via a service account. It’s scoped only to the namespace of Ilum (it will watch for pods in that namespace). It doesn’t deploy any CRD – it is likely just watching built-in resources like Pod or Secret events. This means you won’t see a separate deployment for “gitea-operator”; it’s embedded. This design simplifies deployment but means if the JupyterHub pod is down, the operator is down too.
-
লগিং এবং ডিবাগিং: For DevOps, if a user’s repository isn’t getting created or the templates don’t sync, the first place to check is the JupyterHub pod’s logs. The operator typically logs its actions (e.g., “Creating Gitea repo for user X”, or errors if API calls fail). Common issues might be misconfigured credentials (e.g., wrong git password, so it can’t auth to Gitea – in such a case, you’d see a 401/403 error in the logs), or Gitea not being reachable. Also, if the user’s LDAP password contains special characters or if the operator passes it incorrectly for Git clone, there could be URL encoding issues (so ensure no problematic chars or handle them). These are things to consider when debugging.
-
কোপফ অপারেটর বেসিকস: Since it uses Kopf, the operator is likely defined by a Python function decorated to react to events. Kopf handles the boilerplate of watching and scheduling the function on events. This choice makes it easier to extend the operator’s logic if needed (for example, one could modify it to create additional resources, or to clean up repos when users are removed – though automatic cleanup might not be implemented to avoid deleting user code).
This Gitea operator is primarily of interest to maintainers. Regular end users won’t see it (it’s entirely backend). However, it’s good to know it exists: any automation around Git repo creation is happening because of this component. If in the future you upgrade Ilum or Gitea, you should ensure the operator’s account still has the right permissions. For instance, if you change the Gitea admin password, update the Helm secret so that the operator continues to function.
In summary, the Gitea operator automates what would otherwise be a manual DevOps task (provisioning a Git repo for every user and linking it to their environment). It's a কুবারনেটস-নেটিভ অটোমেশন living inside the JupyterHub container. DevOps teams should include this in their mental model of the system: when a new user comes online in JupyterHub, there's an automated process creating repos and teams in Gitea to support that user. If something goes wrong in that process, it can affect the user experience (e.g., user's notebook might start but their Git repo isn't ready). Thus, keep an eye on those logs during initial setup or after major changes.
ব্যবহারকারীদের জন্য প্রথমবার লগইন গাইড
এই বিভাগটি শেষ-ব্যবহারকারীদের জন্য একটি দ্রুত গাইড সরবরাহ করে যারা প্রথমবারের মতো ইলুমের জুপিটারহাব অ্যাক্সেস করছেন।
জুপিটারহাব অ্যাক্সেস করা হচ্ছে: আপনার এসএসও শংসাপত্রগুলির সাথে ইলাম ইউআইতে লগ ইন করার পরে, আপনাকে স্বয়ংক্রিয়ভাবে আপনার ব্যক্তিগত জুপিটারহাব সার্ভারে অ্যাক্সেস দেওয়া উচিত। শুরু করতে, এখানে যান মডিউল > JupyterHub in the Ilum interface. This should open your JupyterHub environment directly—without requiring a separate login.
অ্যাক্সেসের সমস্যা সমাধান:
- If, after logging in to Ilum, you are not automatically redirected to your Jupyter server, or you see the JupyterHub login page—something may be misconfigured.
- সেক্ষেত্রে জুপিটারহাব পৃষ্ঠায় লগ ইন করার চেষ্টা করুন একই এসএসও (আইএলইউএম) শংসাপত্র তুমি ইলমের জন্য ব্যবহার করেছ।
- আপনি যদি এখনও লগ ইন করতে না পারেন বা বারবার শংসাপত্রের জন্য জিজ্ঞাসা করা হয় তবে দয়া করে আপনার ইলাম প্রশাসককে এই সমস্যাটি রিপোর্ট করুন।
- জুপিটার অ্যাক্সেসের জন্য আপনার প্রয়োজনীয় গ্রুপ সদস্যতারও অভাব থাকতে পারে (উদাঃ,
Jupyter-ব্যবহারকারীবাতথ্য-বিজ্ঞানী). আপনার প্রশাসক প্রয়োজন অনুসারে যাচাই করতে এবং অ্যাক্সেস মঞ্জুর করতে পারেন।
শুধুমাত্র অনুমোদিত ব্যবহারকারীরা (LDAP বা ডিরেক্টরি গ্রুপ সদস্যতা দ্বারা নির্ধারিত) JupyterHub অ্যাক্সেস করতে পারবেন। যদি আপনাকে অ্যাক্সেস অস্বীকার করা হয় তবে আপনার এসএসও শংসাপত্রগুলি ইলুমের অন্য কোথাও বৈধ, অনুমতিগুলির বিষয়ে আপনার প্রশাসকের সাথে চেক করুন।
আপনার নোটবুক সার্ভার চালু করা: After a successful login, you will see a message like “Starting your server” or be redirected to a spawning page. JupyterHub is now launching your personal notebook server within the cluster. This can take ~৩০ সেকেন্ড থেকে কয়েক মিনিট , especially if it’s your first time (the system might be initializing storage, creating your Git repository, and pulling container images). Please be patient – this happens only on first startup or after the service has been idle for a long time. If the process takes too long or errors, you might see a log or an error page – in such cases, try refreshing after a minute. Usually, though, you will automatically land in the Jupyter interface once the server is ready.
JupyterLab ইন্টারফেস: একবার আপনার সার্ভারটি চালু হয়ে গেলে, আপনার ব্রাউজারটি খুলবে JupyterLab interface. This is a web-based IDE where you can create notebooks, write code, open a terminal, etc. On the left, you’ll see a file browser. You should notice some pre-existing folders or notebooks here – those are the স্টার্টার টেমপ্লেট provided by Ilum. For example, you might see a “IlumIntro.ipynb” or a project folder structure. Feel free to open these notebooks to read the instructions or run the example code. They are meant to help you get started with using Spark and other features in Ilum. You can also create new notebooks by clicking the **“+” ** icon or using the Launcher (which appears by default with options like “Python 3 (ipykernel)” or other kernels).
নোটবুকে স্পার্ক ব্যবহার করা: ইলুমের জুপিটারহাবের একটি বড় সুবিধা হ'ল নোটবুক থেকে স্পার্কের কাজ চালানো।
ইলম নোটবুকগুলিতে অ্যাপাচি স্পার্ক চালানোর জন্য বিশদ কর্মপ্রবাহ বর্ণনা করা হয়েছে এখানে .
স্পার্ক সেশন শুরু করা, এন্ডপয়েন্টগুলি পরিচালনা করা এবং ইলুমে স্পার্ক ম্যাজিক ব্যবহার করার বিষয়ে ধাপে ধাপে নির্দেশাবলীর জন্য দয়া করে এই গাইডটি দেখুন।
গিটের সাথে কাজ করা (নোটবুক সংরক্ষণ করা): মনে রাখবেন যে আপনার হোম ডিরেক্টরিটি আসলে গিট সার্ভারের সাথে সংযুক্ত একটি গিট সংগ্রহস্থল। কিছু ব্যবহারের টিপস:
- When you create or modify files, a small badge on the Git icon (left sidebar) will indicate the number of changes. Click the Git icon to open the Git panel. You’ll see a list of changed files. You can stage and commit changes with a message all from this interface.
- করতে কমিট করুন পরিবর্তনসমূহ: গিট প্যানেলে একটি কমিট বার্তা টাইপ করুন এবং চেকমার্ক আইকনে ক্লিক করুন (কমিট)।
- করতে পুশ সার্ভারে: আপ তীর আইকনে ক্লিক করুন। ধাক্কা দেওয়ার পরে, আপনার কাজটি নিরাপদে সার্ভারে সংরক্ষণ করা হয়। আপনি ইলাম গিটিয়া ওয়েব ইন্টারফেসে যেতে পারেন (এর মাধ্যমে অ্যাক্সেসযোগ্য মডিউল > গীতা in Ilum UI) to see your repository. It should show your latest commit. The Git integration ensures you don’t lose work even if the notebook server is recycled.
বন্ধ করা এবং লগ আউট করা:
- লগ আউট করা কেবল আপনাকে জুপিটার সার্ভার থেকে সংযোগ বিচ্ছিন্ন করে; এটা করে না অবিলম্বে আপনার নোটবুক সার্ভারটি বন্ধ করুন বা বন্ধ করুন।
- আপনার নোটবুক সার্ভারটি ব্যাকগ্রাউন্ডে চলতে থাকবে যতক্ষণ না এটি নিষ্ক্রিয়তার একটি সময়ের পরে সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় হয় (নিষ্ক্রিয় সময়সীমা আপনার প্রশাসক দ্বারা সেট করা হয়)।
- সতর্কীকরণ: খোলা নোটবুকগুলিতে যে কোনও অসংরক্ষিত কাজ (যা গিটের প্রতিশ্রুতিবদ্ধ নয় বা সংরক্ষণ করা হয়নি) হবে হারিয়ে যদি নিষ্ক্রিয়তার কারণে আপনার সার্ভারটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।
- পরের বার যখন আপনি লগ ইন করবেন, আপনার সার্ভারটি পুনরায় চালু করা হবে এবং আপনার ফাইলগুলি স্থায়ী স্টোরেজ (গিট এবং আপনার হোম ডিরেক্টরি) থেকে পুনরুদ্ধার করা হবে, তবে অসংরক্ষিত/সিঙ্ক না হওয়া পরিবর্তনগুলি পুনরুদ্ধার করা হবে না।
- সর্বোত্তম অনুশীলন: লগ আউট করার আগে বা দীর্ঘ সময়ের জন্য দূরে সরে যাওয়ার আগে সর্বদা আপনার নোটবুকগুলি সংরক্ষণ করুন এবং গিটে পরিবর্তনগুলি করুন।