рдЯреАрдЯреАрдПрди рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдФрд░ рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЧрд╛рдЗрдбреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдХреЗрд╡рд▓ ttn-lw-stack рдСрд▓-рдЗрди-рд╡рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред
...
рдпрд╣ рдПрдХ рдмрдбрд╝реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧреАред рдЖрдк рдЧреЗрдЯрд╡реЗ рдкрд░ рд╕рднреА 3 рд╕рд░реНрд╡рд░ (NS, AS, рдФрд░ JS) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк JS рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рд░реНрд╡рд░ рд░рдЦрдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХрдИ рдЧреЗрдЯрд╡реЗ рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдФрд░ рджреВрд░рд╕реНрде рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ NS рдФрд░ AS рдХреЛ рдЧреЗрдЯрд╡реЗ рдкрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдкрд░ред
...
рдЕрднреА рдореИрдВ рдХреЗрд╡рд▓ ttn-lw-stack рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА 3 рд╕рд░реНрд╡рд░ (NS, AS, рдФрд░ JS) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
...
рдореИрдВ рдЙрди рд╕рднреА рдХреЛ рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди/рдкреИрдХреЗрдЬ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдирдПрд╕, рдПрдПрд╕, рдФрд░ рдЬреЗрдПрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
...
рдЗрд╕реЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
...
рдЕрднреА рдирд╣реАрдВ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореБрдЭрд╕реЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред
...
рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @zamashal
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рдЖрдк рдШрдЯрдХреЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЗрдЦреЛ;
$ ttn-lw-stack start --help
Start The Things Stack
Usage:
ttn-lw-stack start [is|gs|ns|as|js|console|gcs|dtc|qrg|all]... [flags]
рдЬрдм рдпреЗ рд╕реЗрд╡рд╛рдПрдВ рдПрдХ рд╣реА рдХреНрд▓рд╕реНрдЯрд░ рдФрд░ рд╕рдмрдиреЗрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдВ рддреЛ рдкреНрд░рддрд┐ рдШрдЯрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕реНрдкреЙрди рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ рдХрд░реЗрдВ;
@johanstokking рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмреИрдХрд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕ рдмреАрдЪ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдХреЗрд▓реЗ рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд┐рдпрд╛:
ttn-lw-stack start js --cluster.network-server "ns_ip_address" --cluster.application-server "as_ip_address"
рдЬреЛ рдореИрдВ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рдХреЛ рдХрд┐рд╕ рдкреЛрд░реНрдЯ рдкрд░ Join_Req рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░ рдкрд░ Join_Ans рднреЗрдЬрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ?
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!
@zamashal рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ JS рд╕рд░реНрд╡рд░ рд╣реИ рдФрд░ NS рдФрд░ AS рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИрдВред рддреЛ NS рдФрд░ AS рдореЗрдВ JS рдХреНрд▓рд╕реНрдЯрд░ рдПрдбреНрд░реЗрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╣реА рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЬреАрдПрд╕, рдПрдирдПрд╕ рдФрд░ рдПрдПрд╕ рдХреЛ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдФрд░ рдЬреЗрдПрд╕ рдХреЛ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рддреИрдирд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╢рд╛рдпрдж рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рд▓реЛрд░рд╛рд╡рди рдмреИрдХрдПрдВрдб рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдСрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИред рдпрд╣ NS рдХреЛ TLS рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкрдХреЗ JS рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдЕрдкрдиреЗ JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NS рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдФрд░ рдЕрдкрдиреЗ JS рдХреЛ interop
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ (рджреЗрдЦреЗрдВ --help
)ред рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИред
рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж @johanstokking ! рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╕рдордЭрд╛рдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдмрд╛рдд рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣реА рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░, Semtech Join Server рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЯреАрдЯреАрдПрди рд╕реНрдЯреИрдХ рдХреЗ рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рди рдХрд┐ рдХреБрдЫ рдмрд╛рд╣рд░реА рдЬреИрд╕реЗ рд╕реЗрдордЯреЗрдХ рдпрд╛ рдЕрдиреНрдпред рдХреНрдпрд╛ рдореБрдЭреЗ рдЕрднреА рднреА configure.yml
рдФрд░ example/js.yml
рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рд╡рд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛?
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдПрдирдПрд╕ рдХреЛ рдмрд╛рд╣рд░реА рдЬреЗрдПрд╕ (рдЙрд░реНрдл, рдЯреАрдЯреАрдПрди рд╕реНрдЯреИрдХ рдХреЗ рдЬреЗрдПрд╕) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Join_Req рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рдХреЗ рдкреЛрд░реНрдЯ 8886
(рдЗрдВрдЯрд░рдСрдк/рдЯреАрдПрд▓рдПрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХрдиреЗрдХреНрд╢рди рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдЙрд╕ рдмрдВрджрд░рдЧрд╛рд╣ рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж!
@zamashal рдпрд╣рд╛рдБ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╡реЗ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
рдЭрдВрдбреЗ рджреЗрдЦреЗрдВ:
--interop.listen-tls string Address for the interop server to listen on (default ":8886")
--interop.sender-client-ca.blob.bucket string Bucket to use
--interop.sender-client-ca.blob.path string Path to use
--interop.sender-client-ca.directory string OS filesystem directory, which contains sender client CA configuration
--interop.sender-client-ca.source string Source of the sender client CA configuration (static, directory, url, blob)
--interop.sender-client-ca.url string URL, which contains sender client CA configuration
рдЗрдВрдЯрд░рдСрдк рдХрд╛ рдЕрдкрдирд╛ рд╕рдорд░реНрдкрд┐рдд рд╢реНрд░реЛрддрд╛ рд╣реИ рдЬреЛ рдЯреАрдПрд▓рдПрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЬреАрдЖрд░рдкреАрд╕реА рдХреЗ рд╕рдорд╛рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдЗрдВрдЯрд░рдСрдк рдкреЛрд░реНрдЯ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ 8886) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЛ рдПрдХ рдирд┐рдЬреА CA рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬрд╛рд░реА рдХрд░реЗред рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ NS рджреНрд╡рд╛рд░рд╛ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреНрд▓рд╛рдЗрдВрдЯ CA рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкреНрд░рддрд┐ NetID рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдирд┐рдЬреА рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рд╣рдореЗрд╢рд╛ NetIDs 000000
рдФрд░ 000001
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд▓реЛрд░рд╛ рдПрд▓рд╛рдпрдВрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рд╕реНрд╡рдпрдВ рдПрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
interop.sender-client-ca.source
рд╕реЗ directory
рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ config.yml
рдбрд╛рд▓реЗрдВ:
# Experimentation
000000: ca-000000.pem
# The Things Network Foundation
#000013: ca-000013.pem
рдЖрдкрдХрд╛ рдирд┐рдЬреА рд╕реАрдП ca-000000.pem
ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдЖрдк рдЯреАрдЯреАрдПрди рдиреЗрдЯрдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдЯреАрдЯреАрдПрди рдХрд╛ рд╕реАрдП рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ рдЖрдкрдХреЛ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЬреИрд╕рд╛ рд╣реИ , рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╕реНрдерд╛рдиреАрдп рдЬреЗрдПрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
fqdn: 'thethings.example'
port: 8886
protocol: 'BI1.0'
tls:
root-ca: 'path/to/clientca.pem'
certificate: 'path/to/clientcert.pem'
key: 'path/to/clientkey.pem'
рдпрд╣рд╛рдВ, thethings.example
рдЖрдкрдХреЗ рдЬреНрд╡рд╛рдЗрди рд╕рд░реНрд╡рд░ рдХрд╛ FQDN рд╣реИ рдФрд░ 8886 рдЙрд╕ listen-tls
рдХрд╛ рдкреЛрд░реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ JS рдЗрдВрдЯрд░рдСрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдерд╛ред
рд╕рд╛рде рд╣реА, root-ca
(рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд) _server certificate_ рдХрд╛ рд░реВрдЯ CA рд╣реИред рдпрд╣ рд╡рд╣реА рд╕реАрдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЫреЛрдбрд╝ рднреА рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ (рдпрд╛ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ) рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдирдПрд╕ рджреНрд╡рд╛рд░рд╛ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджреЛрдиреЛрдВ рддрд░рдл рдбреАрдмрдЧ рд▓реЙрдЧ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ ( log.level=debug
) рдФрд░ рдЖрдкрдХреЛ рдЪреАрдЬреЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЪреАрдЬреЗрдВ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдЖрдкрдХреЛ рдХрд╛рдордпрд╛рдмреА рдорд┐рд▓реЗ!
рд╕рд╛рде рд╣реА, рдпрджрд┐ рдЖрдк рдпрд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рджрд░реНрдЬ рдХрд░реЗрдВред рдЗрд╕реЗ рд╢рд╛рдпрдж рдПрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рд╕рдВрджрд░реНрдн рдкреГрд╖реНрда рдХреЛ рднреА рдХреБрдЫ рдкреНрд░реЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
@johanstokking , рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛, рдореИрдВ рдЧрд╛рдЗрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реВрдВрдЧрд╛ред рдЖрдкрдХреА рд╕рднреА рдорджрдж рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рдзрдиреНрдпрд╡рд╛рдж рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛!
рдЕрд░реЗ @johanstokking - рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рдм рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреА рдкреНрд░рдЧрддрд┐ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрдВрдЯрд░рдСрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдореЗрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░ рдХреЛ рдбрд┐рдлреЙрд▓реНрдЯ рдкреЛрд░реНрдЯ 8886 рдкрд░ рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдкрд░ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд░рд╣рддреА рд╣реИ:
error="join-request to join-server error: http post error: Post http://js-server_ip:8886: dial tcp js-server_ip:8886: connect: connection refused"
рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░ рдХреЛ рдЬреАрдЖрд░рдкреАрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рдкреЛрд░реНрдЯ 1884 рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдкрд░ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
level=error msg="uplink: processing uplink frame error" ctx_id=f046310d-e528-4dd2-9dcb-6d5c8232a799 error="join-request to join-server error: http post error: Post http://js-server_ip:1884: net/http: HTTP/1.x transport connection broken: malformed HTTP response \"\\x00\\x00\\f\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x05\\x00\\x00@\\x00\\x00\\x03\\x00\\x00\\xff\\xff\""
ttn рд╕реНрдЯреИрдХ рд▓реЙрдЧ рд╕реЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд:
stack_1 | WARN grpc: Server.Serve failed to create ServerTransport: connection error: desc = "transport: http2Server.HandleStreams received bogus greeting from client: \"POST / HTTP/1.1\\r\\nHost: 1\"" namespace=grpc
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдпрд╛ рдХреЛрдИ рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЬрд╛рдиреЗрдВ рдХрд┐ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдкрдХреЗ рдирд┐рд░рдВрддрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!
рдЬреНрд╡рд╛рдЗрди рд╕рд░реНрд╡рд░ рдХреЗрд╡рд▓ https рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдРрд╕рд╛ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ NS DNS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ js-server_ip
рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж @johanstokking! рддреЛ рд╣рд╛рдБ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ docker-compose.yml рдореЗрдВ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ 8886 рдХреЛ рдореИрдк рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рдореИрдВ рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдПрдХ рдЯреАрдПрд▓рдПрд╕ рд╣реИрдВрдбрд╢реЗрдХ рддреНрд░реБрдЯрд┐ рд╣реИ:
tls: failed to verify client's certificate: x509: certificate signed by unknown authority
рдПрдХ рдмрд╛рдд рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЭрдВрдбреЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ --tls.insecure-skip-verify
рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдЕрднреА рднреА рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдЬреЛрд░ рджрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рджреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЕрдкрдиреЗ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рдЦреЛрд▓ рдЦреЛрд▓рд╛ рдФрд░ рдЬрдм рднреА рдореИрдВ рдорд╢реАрди рджреНрд╡рд╛рд░рд╛ рдЙрди рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ /usr/local/share/ca-certificates/
рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ Permission denied
рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ --tls.insecure-skip-verify
рдзреНрд╡рдЬ рдХреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдереА, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧ рд╣реЛред рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдЕрдм рдпрд╣ рд╣реИ рдХрд┐ рдбреЛрдХрд░ рдХрдВрдЯреЗрдирд░ рдореБрдЭреЗ рдореЗрд░реЗ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?
рдХреНрдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ CA рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд SenderID
рд▓рд┐рдП рдХрд┐рд╕реА CA рджреНрд╡рд╛рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ?
рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЙрдЗрди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ; рд╕рд┐рд╕реНрдЯрдо рдЯреНрд░рд╕реНрдЯ рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВред
рдореИрдВрдиреЗ рдЙрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ config.yml рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
000000: ca-000000.pem
join-servers:
- file: './example/js.yml'
join-euis:
- 'abcd000000000000/16'
рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ js.yml рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛:
fqdn: 'thethings.example'
port: 8886
protocol: 'BI1.0'
tls:
root-ca: 'path/to/clientca.pem'
certificate: 'path/to/clientcert.pem'
key: 'path/to/clientkey.pem'
рдкреНрд░реЗрд╖рдХ рдХреНрд▓рд╛рдЗрдВрдЯ CA рдХреЛ рдЕрднреА рддрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред рджреЗрдЦреЗрдВ (рдпрд╣рд╛рдВ)[ https://github.com/TheThingsNetwork/lorawan-stack/issues/1818#issuecomment -575534345]ред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ:
--interop.sender-client-ca.blob.bucket string Bucket to use
--interop.sender-client-ca.blob.path string Path to use
--interop.sender-client-ca.directory string OS filesystem directory, which contains sender client CA configuration
--interop.sender-client-ca.source string Source of the sender client CA configuration (static, directory, url, blob)
--interop.sender-client-ca.url string URL, which contains sender client CA configuration
рддреЛ source
рдХреЛ directory
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ config.yml
рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбрд╛рд▓рддреЗ рд╣реИрдВред рдпрд╣ рдЗрдВрдЯрд░рдСрдк рдХреЙрдиреНрдлрд┐рдЧ рд╕реЗ рдЕрд▓рдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж @johanstokking! рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВ рдЕрдВрдд рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдореБрджреНрджреЗ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЧрдпрд╛ рдФрд░ рдЕрдм рдЯреАрдЯреАрдПрди-рд╕реНрдЯреИрдХ рдбреАрдмрдЧ рд▓реЙрдЧ рд╕реЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣рд╛ рд╣реВрдВ (рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рд╣реА рдереЗ):
stack_1 | INFO Join not accepted dev_eui=0000000000000000 error=error:pkg/redis:not_found (entity not found) join_eui=0000000000000000 method=POST namespace=joinserver/interop remote_addr=gateway_ip:49426 request_id=01E1D3PZ63CQ7VNCE5JE8SDC3J url=/
stack_1 | INFO Request handled duration=2.948762ms error=error:pkg/interop:join_req (join-request failed) error_cause=error:pkg/redis:not_found (entity not found) method=POST namespace=interop remote_addr=gateway_ip:49426 request_id=01E1D3PZ63CQ7VNCE5JE8SDC3J status=400 url=/
рдзреНрдпрд╛рди рджреЗрдВ, рдЧреЗрдЯрд╡реЗ_рдЖрдИрдкреА рд╡рд╣ рдЬрдЧрд╣ рднреА рд╣реИ рдЬрд╣рд╛рдВ рдПрдирдПрд╕ рдФрд░ рдПрдПрд╕ рд░рд╣рддреЗ рд╣реИрдВред
рдПрдирдПрд╕ рдбреАрдмрдЧ рд▓реЙрдЧ рдкрд░ рдореИрдВ рдпрд╣реА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ:
time="2020-02-18T16:36:52-05:00" level=error msg="uplink: processing uplink frame error" ctx_id=ef20804f-13a8-4f7f-b90e-ce279c1e11ea error="join-request to join-server error: response error, code: JoinReqFailed, description: error:pkg/redis:not_found (entity not found)"
рдореИрдВ рдЬреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рддреНрд░реБрдЯрд┐ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рдореЗрд░реЗ рд░реЗрдбрд┐рд╕ рдШрдЯрдХ рдХреЗ рдЧрд▓рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд░ рджреЛрдмрд╛рд░рд╛ рдЧреМрд░ рдХрд┐рдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдореЗрд▓ рдЦрд╛ рд░рд╣рд╛ рд╣реИред рдореЗрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдерд╛:
volumes:
- ${DEV_DATA_DIR:-.env/data}/redis:/data
рддреЛ рдореИрдВ рдЖрдЧреЗ рдмрдврд╝ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ рдЗрд╕рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛:
volumes:
- './data/redis:/data'
рдлрд┐рд░, рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреА рдЬреЛ рдореБрдЭреЗ рд╕реНрдЯреИрдХ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рдирд╣реАрдВ рджреЗрддреА рд╣реИ:
stack_1 | error:cmd/internal/shared:initialize_identity_server (could not initialize Identity Server)
stack_1 | --- error:pkg/identityserver:db_needs_migration (the database needs to be migrated)
stack_1 | --- pq: database "ttn_lorawan" does not exist
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдерд╛, ./data/redis/
рддрд╣рдд рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ ``appendonly.aof`` рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдерд╛,
./data/redis/
рддрд╣рдд рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ ``appendonly.aof`` рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИред
рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реЗрдбрд┐рд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдареАрдХ рд╣реИред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдЬреНрд╡рд╛рдЗрди рд╕рд░реНрд╡рд░ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИ?
рдЕрд░реЗ рд╢рд╛рдпрдж рдЗрд╕реАрд▓рд┐рдПред рдЦреИрд░ рдореИрдВрдиреЗ рдЬреЛ рдХреБрдЫ рдХрд┐рдпрд╛ рд╡рд╣ рдзреНрд╡рдЬ --js.join-eui-prefix
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рдПрдХ рдФрд░ рдореБрджреНрджреЗ рдкрд░ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдореИрдВ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: рдЕрдВрдХ 1942
рдХреНрдпрд╛ рдореИрдВ рд░реЗрдбрд┐рд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдкреНрд░рд╛рд░реВрдк рдХреНрдпрд╛ рд╣реИ ? рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рдмреАрдЪ рдЕрдиреНрдп рдореБрджреНрджреЗ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ..
рдореИрдВ рджреВрд╕рд░реЗ рдореБрджреНрджреЗ рдкрд░ рдбреИрд╢рдмреЛрд░реНрдб рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореБрдЭреЗ рдЕрдм рдПрдХ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рдЬреЛ рдХрд╣ рд░рд╣реА рд╣реИ sender unknown
рдЬреЛ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЧреЗрдЯрд╡реЗ рдХреА рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЧреЗрдЯрд╡реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА Disconnected
рдХрд╣рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЧреЗрдЯрд╡реЗ_рдЖрдИрдкреА рдФрд░ рд╕рд░реНрд╡рд░_рдЖрдИрдкреА рдХрд╛ рдкрддрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рджреЛрдиреЛрдВ рдХреЛ рдЕрднреА рддрдХ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ред
рдкреНрд░реЗрд╖рдХ рдЕрдЬреНрдЮрд╛рдд рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдиреЗрдЯрдЖрдИрдбреА рдЖрдкрдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░ рдХреЗ рдиреЗрдЯрдЖрдИрдбреА рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИред рджреЛрдиреЛрдВ рдХреЛ 000000
рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдк ttn-lw-cli end-device set <app-id> <dev-id> --net-id=000000
рд╕рд╛рде рд╕реАрдПрд▓рдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд┐рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдиреЗрдЯрдЖрдИрдбреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдореЗрд░рд╛ ttn-lw-cli
рдЕрдЬреАрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдХреЗрд╡рд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рди рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЕрдЧрд░ рдореИрдВ рдХреБрдЫ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ permission denied
ред рдореИрдВрдиреЗ chmod рдХреЛ рдмрджрд▓рдХрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореБрдЭреЗ permission denied
рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрд╛ред рдЕрдЧрд░ рдореИрдВ рдХреЗрд╡рд▓ ttn-lw-cli login
рдЯрд╛рдЗрдк рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:
Post https://localhost:8885/oauth/token: x509: certificate signed by unknown authority
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдЕрдк рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдореБрдЭреЗ рдХреНрдпрд╛ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╡рддрдГ рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рдзрдиреНрдпрд╡рд╛рдж!
рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рд╕рд░реНрд╡рд░ рдФрд░ рд╕реАрдПрд▓рдЖрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдореИрдВ рдХреЗрд╡рд▓ sudo ttn-lw-cli login
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛, рдпрд╣рд╛рдВ рдореЗрд░реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИ:
# sudo ttn-lw-cli config
--allow-unknown-hosts="false"
--application-server-enabled="true"
--application-server-grpc-address="localhost:8884"
--ca=""
--config="/etc/ttn-cli/.ttn-lw-cli.yml,/root/snap/ttn-lw-stack/149/.ttn-lw-cli.yml,/root/snap/ttn-lw-stack/149/.config/.ttn-lw-cli.yml"
--credentials-id=""
--device-claiming-server-grpc-address="localhost:8884"
--device-template-converter-grpc-address="localhost:8884"
--gateway-server-enabled="true"
--gateway-server-grpc-address="localhost:8884"
--identity-server-grpc-address="localhost:8884"
--input-format="json"
--insecure="false"
--join-server-enabled="true"
--join-server-grpc-address="localhost:8884"
--log.level="info"
--network-server-enabled="true"
--network-server-grpc-address="localhost:8884"
--oauth-server-address="https://localhost:8885/oauth"
--output-format="json"
--qr-code-generator-grpc-address="localhost:8884"
рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдореБрдЭреЗ certificate signed by unknown authority
рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛: sudo ttn-lw-cli login --ca "path/to/ca.pem"
рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдПрдХ рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХреГрдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред
рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛:
sudo ttn-lw-cli login --ca "path/to/ca.pem"
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рднреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХреГрдд рддреНрд░реБрдЯрд┐ рджреАред
рд╕реАрдПрд▓рдЖрдИ рдпрд╛ рд╕рд░реНрд╡рд░ рдкрд░? рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓реЙрдЧ рд╣реИрдВ?
рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ? рдпрд╣ рд╕рдм рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдБ:
root<strong i="6">@myserver</strong>:/etc/ttn-cli# sudo ttn-lw-cli login --ca="/etc/ttn-cli/ca.pem" --log.level="debug"
open /etc/ttn-cli/ca.pem: permission denied
рдореИрдВрдиреЗ рдЗрд╕реЗ chmod 777
рдЕрдиреБрдорддрд┐рдпрд╛рдВ рджреЗрдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ ..
рдореИрдВ рдЕрдВрдд рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ /root/snap/ttn-lw-stack/149/.ttn-lw-cli.yml
рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛!
рдореБрдЭреЗ рдЕрдм certificate signed by unknown authority
рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред ttn-lw-cli
рдЯреВрд▓ рдХрд┐рд╕реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рдХреИрд╕реЗ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ? рдпрд╣рд╛рдБ рдкреВрд░рд╛ рд▓реЙрдЧ рд╣реИ:
root<strong i="8">@localhost</strong>:/etc/ttn-stack# sudo ttn-lw-cli login --callback=false --config="/root/snap/ttn-lw-stack/149/.ttn-lw-cli.yml" --log.level="debug" --insecure="true" --allow-unknown-hosts="true" --ca="/root/snap/ttn-lw-stack/149/ca.pem"
WARN Access token expired at 5:17PM
ERROR Please login with the login command
DEBUG ccResolverWrapper: sending update to cc: {[{localhost:1884 <nil> 0 <nil>}] <nil> <nil>}
DEBUG pickfirstBalancer: HandleSubConnStateChange: 0xc00087caa0, {CONNECTING <nil>}
DEBUG pickfirstBalancer: HandleSubConnStateChange: 0xc00087caa0, {READY <nil>}
DEBUG Finished unary call duration=2.376756ms grpc_method=AuthInfo grpc_service=ttn.lorawan.v3.EntityAccess namespace=grpc
INFO Opening your browser on https://localhost/oauth/authorize?client_id=cli&redirect_uri=code&response_type=code
WARN Could not open your browser, you'll have to go there yourself error=fork/exec /usr/bin/xdg-open: permission denied
INFO After logging in and authorizing the CLI, we'll get an access token for future commands.
INFO Please paste the authorization code and press enter
> MF2XI.JX2QFUHNVVWMEYTTRQ3S4DTGPI5VXBYJWVJQ2ZI.OG5C4HQXGMRQ4LVW7ES4IZRNH2L5OJOING2SWOW74LFLQAYDH64Q
ERROR Could not exchange OAuth access token error=Post https://localhost/oauth/token: x509: certificate signed by unknown authority
Post https://localhost/oauth/token: x509: certificate signed by unknown authority
рдореИрдВ рдЙрд╕реА ca.pem рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕ рдкрд░ ttn-stack
рджреНрд╡рд╛рд░рд╛ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ docker-compose рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддрд╛ рд╣реВрдВред
рдореИрдВрдиреЗ ttn-lw-cli
рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ http URI рдФрд░ http рдкреЛрд░реНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди/рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЬрдм рдореИрдВ sudo ttn-lw-cli end-device set "mysensor1app" "mysensor1dev" --net-id=000000 --log.level="debug"
рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
root<strong i="8">@localhost</strong>:/etc/ttn-stack$ sudo ttn-lw-cli end-device set "mysensor1app" "mysensor1dev" --net-id=000000 --log.level="debug"
DEBUG Using access token (valid until 6:42PM)
DEBUG ccResolverWrapper: sending update to cc: {[{localhost:1884 <nil> 0 <nil>}] <nil> <nil>}
DEBUG pickfirstBalancer: HandleSubConnStateChange: 0xc000414730, {CONNECTING <nil>}
WARN grpc: addrConn.createTransport failed to connect to {localhost:1884 <nil> 0 <nil>}. Err :connection error: desc = "transport: authentication handshake failed: context deadline exceeded". Reconnecting...
DEBUG pickfirstBalancer: HandleSubConnStateChange: 0xc000414730, {TRANSIENT_FAILURE connection error: desc = "transport: authentication handshake failed: context deadline exceeded"}
DEBUG pickfirstBalancer: HandleSubConnStateChange: 0xc000414730, {CONNECTING <nil>}
WARN grpc: addrConn.createTransport failed to connect to {localhost:1884 <nil> 0 <nil>}. Err :connection error: desc = "transport: authentication handshake failed: context deadline exceeded". Reconnecting...
рдпрд╣рд╛рдБ рдореЗрд░реА ttn-lw-cli
рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
--allow-unknown-hosts="true"
--application-server-enabled="true"
--application-server-grpc-address="localhost:1884"
--ca="/root/snap/ttn-lw-stack/149/ca.pem"
--config="/etc/ttn-stack/.ttn-lw-cli.yml,/root/snap/ttn-lw-stack/149/.ttn-lw-cli.yml,/root/snap/ttn-lw-stack/149/.config/.ttn-lw-cli.yml"
--credentials-id=""
--device-claiming-server-grpc-address="localhost:1884"
--device-template-converter-grpc-address="localhost:1884"
--gateway-server-enabled="true"
--gateway-server-grpc-address="localhost:1884"
--identity-server-grpc-address="localhost:1884"
--input-format="json"
--insecure="true"
--join-server-enabled="true"
--join-server-grpc-address="localhost:1884"
--log.level="info"
--network-server-enabled="true"
--network-server-grpc-address="localhost:1884"
--oauth-server-address="http://localhost/oauth"
--output-format="json"
--qr-code-generator-grpc-address="localhost:1884"
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ http рд╕реЗрдЯрдЕрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд╛рдж INFO Got OAuth access token
рд╕рдВрджреЗрд╢ рдерд╛ рдЬреЛ рд╕рдлрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рдЕрдкрдиреЗ docker-compose
рд▓реЙрдЧ рд╕реЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рднреА рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреА:
stack_1 | DEBUG Rejected authentication client_id=mqtt_5bc528ca.ae4ea8 error=error:pkg/ttnpb:identifiers (invalid identifiers) error_cause=error:pkg/errors:validation (invalid `application_id`: value does not match regex pattern "^[a-z0-9](?:[-]?[a-z0-9]){2,}$") field=application_id name=ApplicationIdentifiersValidationError namespace=applicationserver/io/mqtt reason=value does not match regex pattern "^[a-z0-9](?:[-]?[a-z0-9]){2,}$" username=
stack_1 | WARN Failed to setup connection error=error:pkg/ttnpb:identifiers (invalid identifiers) error_cause=error:pkg/errors:validation (invalid `application_id`: value does not match regex pattern "^[a-z0-9](?:[-]?[a-z0-9]){2,}$") field=application_id name=ApplicationIdentifiersValidationError namespace=applicationserver/io/mqtt reason=value does not match regex pattern "^[a-z0-9](?:[-]?[a-z0-9]){2,}$" remote_addr=172.18.0.1:57472
рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдпрд╣ рдЙрд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдЕрднреА рднреА рд╕реЗрдВрд╕рд░ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред
рдореБрдЭреЗ рдЕрдм
certificate signed by unknown authority
рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИредttn-lw-cli
рдЯреВрд▓ рдХрд┐рд╕реА рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рдХреИрд╕реЗ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХреА рдЧрдИ CA рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ca
ред рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдпрд╛ рддреЛ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ (рдпрджрд┐ рдпрд╣ рд╕реНрд╡-рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ) рдпрд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ CA рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдБ рдореЗрд░реА
ttn-lw-cli
рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
рдпрджрд┐ рдЖрдк TLS рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдХреНрдпрд╛ рд╕рд░реНрд╡рд░ рдЗрди рдкрддреЛрдВ рдкрд░ рдЕрдкрдиреЗ рдЧреИрд░-рдЯреАрдПрд▓рдПрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реБрди рд░рд╣рд╛ рд╣реИ?
рдореБрдЭреЗ рдЕрдкрдиреЗ
docker-compose
рд▓реЙрдЧ рд╕реЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рднреА рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреА:
рдпрд╣ рдПрдХ MQTT рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ рдПрдХ рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╕реЗ рдЬреБрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдорд╛рдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА рдирд╣реАрдВ рд╣реИред
рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ cert.pem
рдХреЗ рдмрдЬрд╛рдп ca.pem
рд╣рд▓ certificate signed by unknown authority
рдореБрджреНрджрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЕрднреА рднреА рдЕрдиреНрдп рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреЛрд░реНрдЯ 1884
рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реВрдВ:
user<strong i="10">@localhost</strong>:/etc/ttn-stack$ sudo netstat -tulpn | grep LISTEN
tcp6 0 0 :::1884 :::* LISTEN 18793/docker-proxy
рдЬрдм рдореИрдВ 1884 рдкреЛрд░реНрдЯ рдкрд░ рдЯреЗрд▓рдиреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ ttn-lw-cli
рдЯреВрд▓ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЯ рднреА рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреИрдХреЗрдЯ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдбреАрдмрдЧ рд▓реЙрдЧ рдЕрднреА рднреА рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ: "transport: authentication handshake failed: context deadline exceeded". Reconnecting...
рдореИрдВрдиреЗ рдЕрдВрддрддрдГ --insecure
рдзреНрд╡рдЬ рдХреЛ end-device set
рдХрдорд╛рдВрдб рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ !! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдм рд╡реИрд╕реЗ рднреА рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВ
рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВ рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд░реЛрдорд╛рдВрдЪрд┐рдд рд╣реВрдБ --root-keys.app-key.key
рдХреЗ рдЕрд▓рд╛рд╡рд╛ --net-id
, рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ end-device
рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╕реНрд╡рддрдВрддреНрд░ рдкрд░ рдЕрдВрдд рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдЖрдиреЗ рд╢реБрд░реВ рд╣реЛ рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрд╡рд░! рдореИрдВрдиреЗ рдЬрд┐рди рд╕рднреА рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдорд╣рд╛рди рдорджрдж рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!
рдПрдХ рджрдо рдмрдврд╝рд┐рдпрд╛! рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдпрд╣рд╛рдВ рдЕрдкрдиреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░ рд╕рдХреЗрдВ, рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХреЗрдВред
рдкреНрд░реЗрд░рдгрд╛ рдФрд░ рдкрд╣рд▓рд╛ рдкреИрдирдХреЗрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдзрдиреНрдпрд╡рд╛рджред