Compare commits
4
Commits
480cfb0dc7
...
1b9b20380f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b9b20380f | ||
|
|
141d4bd149 | ||
|
|
abc6319dfe | ||
|
|
f057c70f5b |
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
startup_message off
|
startup_message off
|
||||||
|
|
||||||
|
# permet de copier dans le clipboard, en faisant 'C-a Y' apres un copie avec space
|
||||||
|
bind Y eval "writebuf" "exec ... sh -c 'wl-copy < /tmp/screen-exchange'"
|
||||||
|
|
||||||
#pour augmenter le scrollback de l'ecran
|
#pour augmenter le scrollback de l'ecran
|
||||||
defscrollback 10000
|
defscrollback 10000
|
||||||
@@ -44,13 +46,12 @@ screen
|
|||||||
screen -t .vimrc vim -n ./config_files/.vimrc
|
screen -t .vimrc vim -n ./config_files/.vimrc
|
||||||
screen -t .screenrc vim -n ./config_files/.screenrc
|
screen -t .screenrc vim -n ./config_files/.screenrc
|
||||||
screen -t .zshrc vim -n ./config_files/.zshrc
|
screen -t .zshrc vim -n ./config_files/.zshrc
|
||||||
screen -t tutos_vim vim -n ./tutos/vim.txt
|
screen -t tuto_vim vim -n ./tutos/vim.txt
|
||||||
screen -t tutos_screen vim -n ./tutos/screen.txt
|
screen -t tuto_screen vim -n ./tutos/screen.txt
|
||||||
screen -t tutos_git vim -n ./tutos/git.txt
|
screen -t tuto_git vim -n ./tutos/git.txt
|
||||||
screen -t tutos_sites vim -n ./tutos/sites.txt
|
screen -t tuto_sites vim -n ./tutos/sites.txt
|
||||||
screen -t tutos_computer vim -n ./tutos/computer.txt
|
screen -t tuto_computer vim -n ./tutos/computer.txt
|
||||||
screen -t tutos_server vim -n ./tutos/server.md
|
screen -t tuto_server vim -n ./tutos/server.md
|
||||||
screen -t notes_oskey vim -n ./notes/oskey.md
|
|
||||||
|
|
||||||
chdir $HOME
|
chdir $HOME
|
||||||
screen
|
screen
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
"#hugogogo#
|
"#hugogogo#
|
||||||
|
|
||||||
|
|
||||||
"---------------------------------------------------------------
|
"---------------------------------------------------------------
|
||||||
" base settings
|
" base settings
|
||||||
"---------------------------------------------------------------
|
"---------------------------------------------------------------
|
||||||
@@ -32,6 +33,9 @@ set hidden
|
|||||||
"set mouse=a
|
"set mouse=a
|
||||||
set mouse=
|
set mouse=
|
||||||
|
|
||||||
|
" allow copy in the clipboard
|
||||||
|
vnoremap <leader>y :w !wl-copy<CR><CR>
|
||||||
|
|
||||||
" turns on syntax hilighting
|
" turns on syntax hilighting
|
||||||
syntax on
|
syntax on
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -21,14 +21,14 @@
|
|||||||
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
||||||
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||||
#ZSH_THEME="robbyrussell"
|
#ZSH_THEME="robbyrussell"
|
||||||
ZSH_THEME="obraun"
|
#ZSH_THEME="obraun"
|
||||||
#ZSH_THEME="dpoggi"
|
#ZSH_THEME="dpoggi"
|
||||||
#ZSH_THEME="pygmalion"
|
#ZSH_THEME="pygmalion"
|
||||||
#ZSH_THEME="aussiegeek"
|
#ZSH_THEME="aussiegeek"
|
||||||
#ZSH_THEME="bira"
|
#ZSH_THEME="bira"
|
||||||
#ZSH_THEME="candy"
|
#ZSH_THEME="candy"
|
||||||
#ZSH_THEME="dieter"
|
#ZSH_THEME="dieter"
|
||||||
#ZSH_THEME="gnzh"
|
ZSH_THEME="gnzh"
|
||||||
#ZSH_THEME="maran"
|
#ZSH_THEME="maran"
|
||||||
#ZSH_THEME="re5et"
|
#ZSH_THEME="re5et"
|
||||||
#ZSH_THEME="risto"
|
#ZSH_THEME="risto"
|
||||||
|
|||||||
-454
@@ -1,454 +0,0 @@
|
|||||||
---
|
|
||||||
19/11/24
|
|
||||||
|
|
||||||
# reu ux/ui
|
|
||||||
|
|
||||||
- travail moins sur l'app, plus sur la presentation sur les stores
|
|
||||||
- on oublis la meteo sur l'interphone, mais a la place on va implementer un panneau d'informations pour l'immeuble (ex: fete de l'immeuble semaine prochaine, nouveau local velo...)
|
|
||||||
- pour l'instant ben va l'implementer en static
|
|
||||||
- differents cas de figures d'invitations
|
|
||||||
- deja inscrit sur l'app
|
|
||||||
- deja inscrit mais avec un autre mail
|
|
||||||
- pas de compte ni app
|
|
||||||
|
|
||||||
|
|
||||||
# PBM :
|
|
||||||
- anonymous pincode is associated to inhabitant access
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- update all users pincodes
|
|
||||||
- iot ajouter api qui regroupe tous les pincodes par intercom (ACD)
|
|
||||||
|
|
||||||
## access and pincode creation :
|
|
||||||
- new access creation :
|
|
||||||
- create access document in building -> only contains userID -> each time we add a new access for the user, it erase the last one in database
|
|
||||||
- create pincodes documents in building and user
|
|
||||||
- create access document in user -> access name is buildingId, and it contains array of accesses -> each time we add a new access for the user, it replace the last one with a new one with the array increased by the new access
|
|
||||||
- publish to ACD
|
|
||||||
|
|
||||||
## delete pincodes :
|
|
||||||
- quickcode ?
|
|
||||||
- delete the pincode documents
|
|
||||||
- delete the access
|
|
||||||
- pincode ?
|
|
||||||
- delete the pincode documents
|
|
||||||
-
|
|
||||||
|
|
||||||
## todo v1 :
|
|
||||||
|
|
||||||
- **documents :**
|
|
||||||
- [/] types for inhabitant pincode building
|
|
||||||
- [/] types for anonymous pincode building
|
|
||||||
- [/] types for guest pincode building
|
|
||||||
- [/] types for inhabitant pincode user
|
|
||||||
- [/] types for anonymous pincode user
|
|
||||||
- [/] types for guest pincode user
|
|
||||||
- [/] controllers for inhabitant pincode building
|
|
||||||
- [/] controllers for anonymous pincode building
|
|
||||||
- [/] controllers for guest pincode building
|
|
||||||
- [/] controllers for inhabitant pincode user
|
|
||||||
- [/] controllers for anonymous pincode user
|
|
||||||
- [/] controllers for guest pincode user
|
|
||||||
- [/] services for inhabitant pincode building
|
|
||||||
- [/] services for anonymous pincode building
|
|
||||||
- [/] services for guest pincode building
|
|
||||||
- [/] services for inhabitant pincode user
|
|
||||||
- [/] services for anonymous pincode user
|
|
||||||
- [/] services for guest pincode user
|
|
||||||
- [/] generate unique pincodes with pattern
|
|
||||||
- **create pincode :**
|
|
||||||
- [/] create inhabitant user pincodes
|
|
||||||
- [/] create inhabitant building pincodes
|
|
||||||
- [/] create anonymous user pincodes
|
|
||||||
- [/] create anonymous building pincodes
|
|
||||||
- [/] create guest user pincodes
|
|
||||||
- [/] create guest building pincodes
|
|
||||||
- [/] create quickcodes
|
|
||||||
- **delete pincode :**
|
|
||||||
- [/] delete quickcodes and access
|
|
||||||
- **get pincodes:**
|
|
||||||
- [/] get all user pincode documents
|
|
||||||
- [/] get all building pincode documents
|
|
||||||
- [/] get specific user pincode document
|
|
||||||
- [/] get specific building pincode document
|
|
||||||
- [/] get user by accessId
|
|
||||||
- [/] get user pincode id
|
|
||||||
- [/] get building pincode id
|
|
||||||
- [/] get all quickcodes for a user
|
|
||||||
- [ ] a user needs to see the quickcodes in the invitations granted : is it under a building, and when you click on the building in the list you see the quickcode in addition to other accesses ? or in the same arrays as the building invitations ?
|
|
||||||
- [ ] a user needs to see its pincode to access its own building, is it on the invitations screen ?
|
|
||||||
- **iot :**
|
|
||||||
- [ ] update access type in iot node
|
|
||||||
- **callables :**
|
|
||||||
- [/] create quickcode
|
|
||||||
- [/] delete quickcode
|
|
||||||
- [ ] remove get all pincodes for user ?
|
|
||||||
- **tests :**
|
|
||||||
- [/] handle existing documents
|
|
||||||
- [/] associate created documents with expected ones
|
|
||||||
- [/] create inhabitants pincodes
|
|
||||||
- [/] create quickcodes
|
|
||||||
- [/] check all inhabitant documents created
|
|
||||||
- [/] check all quickcode documents created
|
|
||||||
- [/] check inhabitant documents ok
|
|
||||||
- [/] check quickcode documents ok
|
|
||||||
- [/] delete quickcodes
|
|
||||||
- [-] create guest inhabitants
|
|
||||||
- [ ] pubsub messages for all docs are valid
|
|
||||||
- [ ] check errors in quickcode creation
|
|
||||||
- [ ] check errors in quickcode deletion
|
|
||||||
- **security rules:**
|
|
||||||
- [-] add security rules for pincodes
|
|
||||||
- **confluence :**
|
|
||||||
- [/] documentation on pincode v1
|
|
||||||
- [/] documentation on pincode callable functions
|
|
||||||
|
|
||||||
## todo v2 :
|
|
||||||
|
|
||||||
- **delete pincode :**
|
|
||||||
- delete pincodes ?
|
|
||||||
- **update pincode :**
|
|
||||||
- refresh (automatic and manual)
|
|
||||||
- change informations ? (ex: dates)
|
|
||||||
- update all pincodes (for example if we upgrade the pincode behavior, to reflect on existing ones)
|
|
||||||
- **iot :**
|
|
||||||
- iot needs to have a list of the pincodes for an ACD
|
|
||||||
- **additional :**
|
|
||||||
- createAccess returns pincode id in a clean way (or, add pincodeId to access docs, so we can retrieve it ?) (CLD1-559)
|
|
||||||
- each quickcode (and pincode ?) creation does not trigger a replacement of the database access document in building and user (CLD1-560)
|
|
||||||
- clean pincodes : pincodes documents may have been partially deleted, only in user or in building, or forgotten when access or invitation has been deleted
|
|
||||||
- should we put pincodes documents in inviter collection ? also adding a field 'inviter' in pincode documents
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- `test_checks` : 553
|
|
||||||
- `pincode_test_match_helper_function` : 595
|
|
||||||
- `utility_error_log` : 542
|
|
||||||
- `utility_parameter` : 541
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- guest user service created
|
|
||||||
- call the service from createAccess
|
|
||||||
- create tests to check if it works
|
|
||||||
- fix tests for quickcodes
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- [/] update my branch with develop
|
|
||||||
- [/] add dates to guests and permanent-guests
|
|
||||||
- [/] user can delete its quickcodes
|
|
||||||
- [ ] front needs to get invitations and quickcodes
|
|
||||||
- [ ] update callable to get invitations : fix database call, and add get-quickcode
|
|
||||||
- [ ] create service to get quickcodes
|
|
||||||
- [ ] front needs to get pincode informations (id only ?) when click on an access
|
|
||||||
- [ ] create callable for that ? or better : plug into the callable used to get the access informations (if exists)
|
|
||||||
- [ ] **add v2 task :** delete pincodes
|
|
||||||
- [ ] **add v2 task :** should we put pincodes documents in inviter collection ? also adding a field 'inviter' in pincode documents
|
|
||||||
- [ ] test callable create-quickcodes
|
|
||||||
- [ ] test pubsub messages
|
|
||||||
- [ ] test access creation for quickcodes
|
|
||||||
- [ ] test guest pincodes
|
|
||||||
- [ ] update access type in iot node
|
|
||||||
- [ ] add security rules for pincodes
|
|
||||||
- [ ] test security rules
|
|
||||||
- [ ] delete current callable function to get-pincodes ? or keep it ? it has not been well tested
|
|
||||||
|
|
||||||
--
|
|
||||||
|
|
||||||
- inhabitantUser
|
|
||||||
- inhabitantGuestUser -> time
|
|
||||||
- inhabitantPermanentGuestUser -> time
|
|
||||||
- get pincode of the invitation -> the guest can see the pincode on the invitation
|
|
||||||
- getQuickcodes
|
|
||||||
- add jira issue for the enum import
|
|
||||||
- getAllinvitesBasedOnVisibility
|
|
||||||
|
|
||||||
--
|
|
||||||
|
|
||||||
- inhabitantGuestUser && inhabitantPermanentGuestUser :
|
|
||||||
- add dates
|
|
||||||
- put documents in invited collection
|
|
||||||
- add jira : put documents in inviter collection
|
|
||||||
- add jira : delete pincodes
|
|
||||||
- delete quickcodes
|
|
||||||
|
|
||||||
--
|
|
||||||
|
|
||||||
- test callable create quickcodes
|
|
||||||
- test callable get quickcodes by user
|
|
||||||
- check on figma what other functions are necessary for v1
|
|
||||||
- callable get quickcodes by pincodes ?
|
|
||||||
- callable delete quickcodes ?
|
|
||||||
- test pubsub messages
|
|
||||||
- test errors
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
1. create jira epic : "add helpers for repetitive tasks"
|
|
||||||
2. create 2 topic :
|
|
||||||
- "security checks in callable functions"
|
|
||||||
- "logging and throwing errors"
|
|
||||||
3. rebase branch `security_and_errors` into current develop :
|
|
||||||
- git checkout `develop`
|
|
||||||
- git pull `develop`
|
|
||||||
- git checkout `security_and_errors`
|
|
||||||
- git rebase --onto develop 4af5282cf6c23be9b86a59a3772337a1a8fe36ae
|
|
||||||
- git checkout `develop`
|
|
||||||
- git rebase `security_and_errors`
|
|
||||||
4. create jira issue in debt for todo in createAccess about return null instead of throwing errors (/workspace/functions/src/modules/core/modules/access/services/access.service.ts)
|
|
||||||
5.
|
|
||||||
|
|
||||||
**questions:**
|
|
||||||
- how access documents and pincodes and devices documents are linked ?
|
|
||||||
- user have access documents, that only contains 'user' and 'building' infos
|
|
||||||
- they do not say 'access with device' or 'pincode'
|
|
||||||
|
|
||||||
```
|
|
||||||
/users/{userId}/accesses/
|
|
||||||
- accessId: string
|
|
||||||
- accesses:
|
|
||||||
[
|
|
||||||
{
|
|
||||||
- accessId: string
|
|
||||||
- accessRights: [{validity: 'permanent'}, ]
|
|
||||||
- authorizedDoors:
|
|
||||||
[
|
|
||||||
{
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
- accessControlDevices:
|
|
||||||
[
|
|
||||||
{
|
|
||||||
},
|
|
||||||
{
|
|
||||||
},
|
|
||||||
]
|
|
||||||
- doorId: string
|
|
||||||
- doorName: string
|
|
||||||
- doorStreetAddress: {}
|
|
||||||
},
|
|
||||||
]
|
|
||||||
- creationDate: Timestamp
|
|
||||||
- inviterId: string
|
|
||||||
- inveterName: string
|
|
||||||
- type: OSKUserAccessType
|
|
||||||
- unitId: string
|
|
||||||
},
|
|
||||||
]
|
|
||||||
- buildingId: string
|
|
||||||
- buildingImageFilename: string
|
|
||||||
- bulidingName: string
|
|
||||||
- buildingStreetAddress: {}
|
|
||||||
- creationDate: Timestamp
|
|
||||||
- userFirstName: string
|
|
||||||
- userId: string
|
|
||||||
- userLastName: string
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
1. why not adding buildingId in the user pincode document ? and start and end time ?
|
|
||||||
- we add buildingId because it will help find the associated building document, but the other infos are not relevant unless front need it
|
|
||||||
2. why having a request.userId parameter if we can identify the userId with the auth ?
|
|
||||||
- not sure, but might be for security
|
|
||||||
3. check permissions ? how do they work ? are they always related to organizations ? What is an organization anyway ?
|
|
||||||
- permissions are for organization users, which are either oskey admin user or client admin user, because they can have different roles and permissions. But not for normal users
|
|
||||||
4. why is there no user document in buildings collection ?
|
|
||||||
- the user document in building collection is not actually a user document, but something else (i dont remember)
|
|
||||||
5. how to change iot
|
|
||||||
- this is another project that i have to clone
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- [/] generate pincodes with constraints
|
|
||||||
- [/] create services and controllers to add pincode documents
|
|
||||||
- [/] create pincode documents when users are added
|
|
||||||
- [/] add pincode to access
|
|
||||||
- [/] add doors to pincodes documents
|
|
||||||
- [/] test if pincodes documents are created and contains all fields
|
|
||||||
- [ ] add pincode access to iot
|
|
||||||
- [/] create services and controllers to get pincode
|
|
||||||
- [ ] test get pincode service
|
|
||||||
- [ ] create pincode for guest users
|
|
||||||
- [ ] test pincode creation for guest users
|
|
||||||
- [-] write pincode security rules
|
|
||||||
- [ ] test pincode creation -> test pincode rules
|
|
||||||
- [-] add callable functions to create anonymous pincodes
|
|
||||||
- [ ] test pincode callable functions to create anonymous pincodes
|
|
||||||
- [ ] add callable functions to get user pincodes
|
|
||||||
- [ ] test pincode callable functions to get user pincodes
|
|
||||||
- [ ] test pincode accesses
|
|
||||||
- [ ] add callable function to delete pincodes
|
|
||||||
- [ ] test pincode deletion
|
|
||||||
|
|
||||||
---
|
|
||||||
15/10/24
|
|
||||||
|
|
||||||
- console.log vs logger function ?
|
|
||||||
-
|
|
||||||
|
|
||||||
---
|
|
||||||
10/10/24
|
|
||||||
|
|
||||||
pincodes child issues :
|
|
||||||
old :
|
|
||||||
- create pincode controller structure
|
|
||||||
- generate pincode with constraints
|
|
||||||
- generate docs when pincode created
|
|
||||||
- get pincodes by user, building, and both
|
|
||||||
- pincode firestore rules
|
|
||||||
- update OSKAccessMethod
|
|
||||||
- add pincode to access
|
|
||||||
- update pincode accessMethod in iot endpoint
|
|
||||||
- tests
|
|
||||||
|
|
||||||
new:
|
|
||||||
- [s] generate pincodes with constraints
|
|
||||||
- [s] create services and controller to add pincodes documents
|
|
||||||
- [s] create pincodes documents when users are added
|
|
||||||
- [s] add doors to pincodes documents
|
|
||||||
- [t] tests if pincodes documents are created and contains all fields
|
|
||||||
- [s] create services and controller to get pincodes
|
|
||||||
- [s] add pincode to access
|
|
||||||
- update OSKAccessMethod
|
|
||||||
- update pincode accessMethod in iot endpoint
|
|
||||||
- [t] write pincodes security rules
|
|
||||||
- [t] test pincodes creation
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
09/10/24
|
|
||||||
|
|
||||||
- what is the difference between `._set()` and `._create()` :
|
|
||||||
- why `._set()` needs a creationDate timestamp and not `._create()` ?
|
|
||||||
- what happens if we use `._create()` and then `._set()` to override ? will the creationDate be there ?
|
|
||||||
- when to use which one ?
|
|
||||||
|
|
||||||
---
|
|
||||||
07/10/24
|
|
||||||
|
|
||||||
- in `/workspace/functions/src/modules/core/modules/access/controllers/access_pincode.controller.ts`
|
|
||||||
is it ok to have `export class OSKPincodeController extends OSKDocumentController<OSKBuildingPincodeDocument> {`
|
|
||||||
with a controller in core build on a controller in building ?
|
|
||||||
- **yes**
|
|
||||||
- the function to check if code is uniq cannot prevent collisions, in its actual form
|
|
||||||
- **ticket oppened, to do it with redis (FIR1-469)**
|
|
||||||
- should i use "this" instead of refering the class itself ?
|
|
||||||
- i didnt get the .default very well so far
|
|
||||||
- i didnt get exactly the distinction btwn controller and service for a document
|
|
||||||
- **controller will directly call the database**
|
|
||||||
- i didnt get also the organization in modules, do they correspond to a collection in the database ?
|
|
||||||
|
|
||||||
---
|
|
||||||
20/09/24
|
|
||||||
|
|
||||||
#### documents non detruits quand les users sont detruits :
|
|
||||||
- accesses
|
|
||||||
- organizations
|
|
||||||
- organizationInvitations
|
|
||||||
- sentInvitations
|
|
||||||
- invitations
|
|
||||||
|
|
||||||
#### documents detruits avec les users :
|
|
||||||
- devices
|
|
||||||
|
|
||||||
---
|
|
||||||
19/09/24
|
|
||||||
|
|
||||||
questions pour greg:
|
|
||||||
- dans quel cas utiliser le "retries(500)" ?
|
|
||||||
- les rules ne semblent pas proteger quand on est admin, c'est normal ?
|
|
||||||
- je ne pense pas avoir besoin de rajouter des indexes, puisque je n'utilise que le champ "accountDeletionDate"
|
|
||||||
- scheduled functions not supported in emulator : https://github.com/firebase/firebase-tools/issues/2034
|
|
||||||
|
|
||||||
---
|
|
||||||
17/09/24
|
|
||||||
|
|
||||||
- scheduler
|
|
||||||
- tester rules
|
|
||||||
- indexe
|
|
||||||
|
|
||||||
---
|
|
||||||
12/09/24
|
|
||||||
|
|
||||||
utiliser "confluence" de attlassian, une sorte de wiki
|
|
||||||
utiliser le drive et les docs de google
|
|
||||||
utiliser les app slacks pour recevoir les notifications
|
|
||||||
|
|
||||||
questions pour greg:
|
|
||||||
- conventions de nommage et organisations des tests
|
|
||||||
- tests update document beosins d'etre plus complets ?
|
|
||||||
- pourquoi 2 types de timestamp differents, ex in :
|
|
||||||
- `functions/src/modules/user/models/documents/user_document.model.ts`
|
|
||||||
- `test/src/specs/user/user_deletion.specs.ts`
|
|
||||||
- où se trouvent les dossiers sur le drive / docs ?
|
|
||||||
|
|
||||||
---
|
|
||||||
10/09/24
|
|
||||||
reu dev
|
|
||||||
|
|
||||||
framework auth fournit par google :
|
|
||||||
- reauth , valider nouvel email ,
|
|
||||||
|
|
||||||
pour pouvoir customizer les emails il faudrait le faire soi-meme en backend, pas prioritaire pour l'instant
|
|
||||||
|
|
||||||
---
|
|
||||||
09/09/24
|
|
||||||
1rst day
|
|
||||||
|
|
||||||
- installer slack
|
|
||||||
- installer vscode (ou vscodium en open source)
|
|
||||||
- regarder les firmware iot : le sdk est uniquement disponible sur les versions LTS
|
|
||||||
|
|
||||||
- dev container : les repository vscode contiennent tous un dev container pour les dependances (genre image-magik)
|
|
||||||
- apigee : api gateway (!= proxy) -> security
|
|
||||||
- service account : gestion de token interne a google, entre les containers
|
|
||||||
- gestion git : gitkraken ou source tree
|
|
||||||
- utiliser chrome plutot que chromium ou firefox
|
|
||||||
|
|
||||||
- install nerd font
|
|
||||||
|
|
||||||
|
|
||||||
1. creer un projet firebase en suivant tuto firestore et cloud functions
|
|
||||||
2. voir tuto sur codelab "local development with firebase"
|
|
||||||
|
|
||||||
- test-firebase-6fe21
|
|
||||||
- session id : 7D583
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
# devcontainer ownership
|
|
||||||
|
|
||||||
- inside the dev container, the user is vscode (1001), so outside the container the local user (asususus) cannot modify files, nor push or pull or anything
|
|
||||||
- the solution is to give the user rights on the files, without changing them, by using ACL :
|
|
||||||
- **sudo setfacl -R -m u:asususus:rwx ./firebase-oskey-dev** : give recursive read+write+execute access to user asususus
|
|
||||||
- **sudo setfacl -R -d -m u:asususus:rwx ./firebase-oskey-dev** : set default acl access for all futur changes in the folder
|
|
||||||
- to remove : **sudo setfacl -Rb ./firebase-oskey-dev**
|
|
||||||
|
|
||||||
### ! previous method didn't worked very well
|
|
||||||
- so instead, outside the container, i added my user `asususus` to the group 1001 `piavpn` :
|
|
||||||
- **sudo usermod -aG piavpn asususus**
|
|
||||||
|
|
||||||
# github ssh
|
|
||||||
|
|
||||||
- to connect to ssh from local machine, need to tell ssh to not use the ssh key it uses for personnal account github.com
|
|
||||||
- to do that, create a config file and tells it to use another key when remote is 'github.com.oskey'
|
|
||||||
- in ~/.ssh/config file:
|
|
||||||
```
|
|
||||||
# gitHub personal account
|
|
||||||
Host github.com
|
|
||||||
HostName github.com
|
|
||||||
User git
|
|
||||||
IdentityFile ~/.ssh/id_ed25519_github
|
|
||||||
IdentitiesOnly yes
|
|
||||||
|
|
||||||
# For GitHub work account
|
|
||||||
Match host github.com exec "basename $(pwd)" == "firebase-oskey-dev"
|
|
||||||
IdentityFile ~/.ssh/id_ed25519_hugo_oskeys
|
|
||||||
```
|
|
||||||
|
|
||||||
+6
-215
@@ -1,222 +1,13 @@
|
|||||||
ssh huho@62.210.206.99
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
install new os steps :
|
|
||||||
|
|
||||||
- exemple os : proxmox
|
|
||||||
- connect to ecowan
|
|
||||||
- activate IPMI (Intelligent Platform Management Interface) :
|
|
||||||
- fill ip address (ip of internet connexion)
|
|
||||||
- ecowan generates :
|
|
||||||
- the session ip : 51.159.47.149
|
|
||||||
- the username : sd-51086
|
|
||||||
- the password is shown on ecowan panel
|
|
||||||
- you can use it to connect to the IDRAC6 panel with different methods :
|
|
||||||
1. either go to the url `https://51.159.47.149`
|
|
||||||
2. or with this script (which download the java packages and create the console for you) :
|
|
||||||
- the script can be found here : **https://gist.github.com/TheJJ/2394cd76d3e2c34d02e3da1bd3e489b2?ref=blockdev.io**
|
|
||||||
- I added it to this config folder
|
|
||||||
- i also added it to the PATH **~/.local/bin/idracclient.py** so you can call it from anywhere like that : **idracclient.py <ip> -u <username>**
|
|
||||||
3. or use a java console, manually (you need to download all the java packages),
|
|
||||||
- folder architecture :
|
|
||||||
```
|
|
||||||
idrac-folder/
|
|
||||||
├── jre/ ← contains bin/java
|
|
||||||
├── jnlp/ ← optional: keep the original .jnlp here for backup
|
|
||||||
├── avctKVM.jar
|
|
||||||
├── lib/
|
|
||||||
│ ├── libavctKVMIO.so
|
|
||||||
│ └── libavmLinux.so
|
|
||||||
└── start-virtual-console.sh
|
|
||||||
```
|
|
||||||
- jre/ :
|
|
||||||
- download from oracle : https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html
|
|
||||||
- download `1.7.0_80 or 1.7.0_79` : `jre-7u80-macosx-x64.tar.gz` or `jre-7u79-macosx-x64.tar.gz` (need to create an account)
|
|
||||||
- jnlp/ :
|
|
||||||
- connect to idrac online from ecowan session
|
|
||||||
- download jnlp by clicking `launch virtual console`
|
|
||||||
- avctKVM.jar :
|
|
||||||
- find the file avctKVM to download in the jnlp file by looking for line : `<jar href="https://<idrac-ip>:443/software/avctKVM.jar" />`
|
|
||||||
- download with this curl command to avoid problems with dh : `curl -k --ciphers 'DEFAULT:!DH' "https://51.159.47.149:443/software/avctKVM.jar" -o avctKVM.jar`
|
|
||||||
- lib/ :
|
|
||||||
- find the lines in jnlp file to download :
|
|
||||||
`<nativelib href="https://51.159.47.149:443/software/avctKVMIOLinux64.jar" download="eager"/>`
|
|
||||||
`<nativelib href="https://51.159.47.149:443/software/avctVMLinux64.jar" download="eager"/>`
|
|
||||||
- download them :
|
|
||||||
`curl -k --ciphers 'DEFAULT:!DH' "https://51.159.47.149:443/software/avctKVMIOLinux64.jar" -o avctKVMIOLinux64.jar`
|
|
||||||
`curl -k --ciphers 'DEFAULT:!DH' "https://51.159.47.149:443/software/avctVMLinux64.jar" -o avctVMLinux64.jar`
|
|
||||||
- `mkdir -p lib`
|
|
||||||
- extract from the native library jars
|
|
||||||
`unzip -j avctKVMIOLinux64.jar "*.so" -d lib/`
|
|
||||||
`unzip -j avctVMLinux64.jar "*.so" -d lib/`
|
|
||||||
- start-virtual-console.sh :
|
|
||||||
```
|
|
||||||
#!/bin/bash
|
|
||||||
echo -n 'jre folder: '
|
|
||||||
read dracjrefolder
|
|
||||||
echo -n 'host ip: '
|
|
||||||
read drachost
|
|
||||||
echo -n 'username: '
|
|
||||||
read dracuser
|
|
||||||
echo -n 'password: '
|
|
||||||
read -s dracpwd
|
|
||||||
echo
|
|
||||||
./$dracjrefolder/bin/java -cp avctKVM.jar -Djava.library.path=./lib com.avocent.idrac.kvm.Main ip=$drachost kmport=5900 vport=5900 user=$dracuser passwd=$dracpwd apcp=1 version=2 vmprivilege=true "helpurl=https://$drachost:443/help/contents.html"
|
|
||||||
```
|
|
||||||
- make it executable : `chmod +x start-virtual-console.sh`
|
|
||||||
- then on the console, you don't need to login, just click on attaching a media, map your iso file, and then click on warn reboot, and when prompter press f11 to enter boot menu and choose the virtual cd with the iso file
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
proxmox network configuration :
|
|
||||||
|
|
||||||
- hostname (FQDN - Fully Qualified Domain Name) : proxmox.hugulumu.fr
|
|
||||||
- ip address (CIDR) : 62.210.206.99/24
|
|
||||||
- gateway : 62.210.206.1
|
|
||||||
- DNS server : 1.1.1.1 (cloudflare)
|
|
||||||
- url : https://62.210.206.99:8006
|
|
||||||
|
|
||||||
still need to do :
|
|
||||||
|
|
||||||
- Create the A record (e.g. proxmox.hugulumu.fr) :
|
|
||||||
You can point your domain whenever you want — the hostname is just internal until then.
|
|
||||||
- Configure HTTPS (Let’s Encrypt or proxy) :
|
|
||||||
By default, Proxmox uses a self-signed cert. You’ll get browser warnings, but it still works securely.
|
|
||||||
- Set up a firewall or 2FA :
|
|
||||||
Strongly recommended later, especially since it’s a public server — but not required to get started.
|
|
||||||
-> Enable 2FA, Or even set up a reverse proxy with HTTPS (Let’s Encrypt) and restrict access with a VPN or fail2ban
|
|
||||||
|
|
||||||
todo list :
|
|
||||||
|
|
||||||
✅ 1. DNS Configuration
|
|
||||||
|
|
||||||
- [ ] Create an A record:
|
|
||||||
- proxmox.hugulumu.fr → your server’s public IP.
|
|
||||||
- Do it from your domain registrar (where you manage hugulumu.fr).
|
|
||||||
- [ ] Wait for DNS propagation (can take a few minutes to hours).
|
|
||||||
|
|
||||||
🔐 2. HTTPS Access
|
|
||||||
|
|
||||||
- [ ] Set up a valid SSL certificate for your Proxmox web UI:
|
|
||||||
- Option 1: Use Let’s Encrypt via acme.sh or Proxmox built-in ACME support.
|
|
||||||
- Option 2: Use a reverse proxy like Nginx or Caddy (if you plan to expose more services later).
|
|
||||||
|
|
||||||
🛡️ 3. Firewall Setup
|
|
||||||
|
|
||||||
- [ ] Enable firewall on Proxmox (Datacenter → Firewall → Enable).
|
|
||||||
- [ ] Create basic rules:
|
|
||||||
- Allow Web UI (port 8006)
|
|
||||||
- Allow SSH (port 22)
|
|
||||||
- Block everything else by default
|
|
||||||
- [ ] If your hoster (like Online.net / Scaleway / Hetzner?) has a cloud firewall, configure it too.
|
|
||||||
|
|
||||||
🔐 4. Secure Access
|
|
||||||
|
|
||||||
- [ ] Create a new user for yourself, disable root login (or set 2FA for root)
|
|
||||||
- [ ] Enable 2FA (TOTP) for web UI
|
|
||||||
- [ ] Set up SSH key authentication and disable password SSH login (optional but good)
|
|
||||||
|
|
||||||
🧰 5. System Updates
|
|
||||||
|
|
||||||
- [ ] apt update && apt full-upgrade
|
|
||||||
- [ ] Enable automatic security updates:
|
|
||||||
```
|
|
||||||
apt install unattended-upgrades
|
|
||||||
dpkg-reconfigure --priority=low unattended-upgrades
|
|
||||||
```
|
|
||||||
|
|
||||||
🧠 6. Backups and Templates
|
|
||||||
|
|
||||||
- [ ] Set up a storage volume (local or NFS/SSH backup target)
|
|
||||||
- [ ] Download some VM templates (Debian, Ubuntu, etc.)
|
|
||||||
- [ ] Create a snapshot or scheduled backup job
|
|
||||||
|
|
||||||
🚨 Optional (But Nice):
|
|
||||||
|
|
||||||
- [ ] Set up fail2ban or similar tool
|
|
||||||
- [ ] Monitor with cockpit or netdata
|
|
||||||
- [ ] Set up email notifications for Proxmox alerts
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
install pbs on a vm on proxmox (Proxmox Backup Server) -> to have incremental backups
|
|
||||||
|
|
||||||
---
|
|
||||||
when i connect to proxmox i get this message : You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.
|
|
||||||
ChatGPT said:
|
|
||||||
|
|
||||||
Yep, that message is normal if you're using the free version of Proxmox without a paid subscription.
|
|
||||||
💡 What it means
|
|
||||||
|
|
||||||
Proxmox VE (Virtual Environment) is open source and free to use.
|
|
||||||
|
|
||||||
But they offer enterprise support via paid subscriptions.
|
|
||||||
|
|
||||||
That message is just a reminder—it doesn’t block any functionality (except access to the enterprise repo).
|
|
||||||
|
|
||||||
✅ Your Options
|
|
||||||
1. Ignore It
|
|
||||||
|
|
||||||
Totally safe to ignore.
|
|
||||||
|
|
||||||
It just appears after login on the web UI.
|
|
||||||
|
|
||||||
2. Disable the Message (UI Only)
|
|
||||||
|
|
||||||
You can remove the popup by editing a file on your Proxmox host:
|
|
||||||
|
|
||||||
nano /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
|
|
||||||
|
|
||||||
Search for:
|
|
||||||
|
|
||||||
if (data.status !== 'Active') {
|
|
||||||
|
|
||||||
And change it to:
|
|
||||||
|
|
||||||
if (false) {
|
|
||||||
|
|
||||||
Then save (Ctrl+O, Enter, Ctrl+X) and clear your browser cache or reboot the UI:
|
|
||||||
|
|
||||||
systemctl restart pveproxy
|
|
||||||
|
|
||||||
⚠️ Note: This gets overwritten when you update Proxmox, so it’s a temporary cosmetic fix.
|
|
||||||
3. Switch to the Free Repo
|
|
||||||
|
|
||||||
Make sure you're using the no-subscription repository for updates:
|
|
||||||
|
|
||||||
Edit this file:
|
|
||||||
|
|
||||||
nano /etc/apt/sources.list.d/pve-enterprise.list
|
|
||||||
|
|
||||||
Comment out the enterprise repo:
|
|
||||||
|
|
||||||
# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
|
|
||||||
|
|
||||||
Then add the no-subscription repo:
|
|
||||||
|
|
||||||
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
|
|
||||||
|
|
||||||
And update:
|
|
||||||
|
|
||||||
apt update && apt full-upgrade
|
|
||||||
|
|
||||||
Let me know if you want help setting that up or if you're considering a subscription.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------
|
|
||||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
END PROXMOX
|
|
||||||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
-------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
ipv6 : fe80::d6ae:52ff:fec9:29d6
|
|
||||||
netmask : 64
|
|
||||||
gateway : fe80::226:bff:feef:59ff
|
|
||||||
|
|
||||||
# server :
|
# server :
|
||||||
------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------
|
||||||
|
|
||||||
## connect with ssh :
|
## connect with ssh :
|
||||||
|
- create ssh key
|
||||||
|
- `ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_<name_of_file> -C <name_in_pub_key>`
|
||||||
|
- ex: `ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_contabo_yunohost_huho -C 42_contabo_yunohost_huho`
|
||||||
|
- then i know :
|
||||||
|
- that this key is for yunohost server at contabo, for user huho
|
||||||
|
- and when i look at the public key on server, i see it's used from 42
|
||||||
- **ssh <username>@<server_ip>**
|
- **ssh <username>@<server_ip>**
|
||||||
- if first time after reinstalling on same ip, you need to remove local old keys :
|
- if first time after reinstalling on same ip, you need to remove local old keys :
|
||||||
- **ssh-keygen -f "/path/to/.ssh/known_hosts" -R <ip>**
|
- **ssh-keygen -f "/path/to/.ssh/known_hosts" -R <ip>**
|
||||||
|
|||||||
Reference in New Issue
Block a user